Sugestão para melhorar código

Ola a todos,

Pessoal estou com um probleminha na rotina abaixo e gostaria de uma opinião de voces de como melhora-lá.
É o seguinte, ela funciona em um balcão com quatro computadores, que quando um usuario clica em imprimir de uma pagina web é gerando um txt no servidor, um computador que esta ligado um impressora bematech não fiscal e a rotina funcionando, essa rotina verifica o arquivo a cada dez segundos, se tiver informação envia para a impressora.
Só que hora funciona, hora não. Gostaria de uma sugestão de como melhorar essa rotina para que fique funcionando sem ter que ficar apertando F5 nas paginas web.

package acesso;

import java.io.*;
import java.net.*;
import java.util.Timer;
import java.util.TimerTask;

public class Acesso{
    //private String JRBeanCollectionDataSource;

        public void Apaga() throws IOException{
        URL url = new URL("http://tst.fateci.com.br/academico/desenvolve/fotos/delete.php");
        URLConnection amp_apaga = url.openConnection();
        InputStream stream = amp_apaga.getInputStream();
        amp_apaga.connect();
    }

public static final long TEMPO = (100 * 60);
    public static void main(String[] args) throws MalformedURLException, IOException {

       final Acesso ap = new Acesso();
       Timer timer = null;
         if (timer == null) {
             timer = new Timer();
             TimerTask tarefa = new TimerTask() {
                private FileOutputStream outputFile;
                @SuppressWarnings("static-access")
             public void run() {

try{
   
   FileFilter filter = new FileFilter() {  
        public boolean accept(File file) {  
            return file.getName().endsWith(".txt");  
        }  
    };  
      
    File dir = new File("/caminho/do/seu/diretorio");  
    File[] files = dir.listFiles(filter);  

    URL amplus = new URL("http://tst.fateci.com.br/academico/desenvolve/fotos/dados.txt");
    URLConnection amp = amplus.openConnection();
    amp.setConnectTimeout(7000);
    amp.connect();
    BufferedReader in = new BufferedReader(new InputStreamReader(amp.getInputStream(), "ISO-8859-1"));
    StringBuilder lines = new StringBuilder();
    String line;          
              for(line = in.readLine(); line != null;
               line = in.readLine())
                    {
                    lines.append(line).append("\n\r");
                     }
            in.close();
            
           if(lines.length() == 0){
           }else{
                
                ap.Apaga();
                FileOutputStream outputFile = new FileOutputStream("LPT1:");
                PrintWriter out = new PrintWriter(outputFile);
                out.print(lines);
                out.flush();
                outputFile.close();
                out.close();
                                 
                //System.out.println(lines);
            }
            } catch (MalformedURLException me) {
            } catch (IOException ioe) {

            }
            }  //fechou run
            };  // fechou TimerTask
             timer.scheduleAtFixedRate(tarefa, TEMPO, TEMPO);
            }
         }
    }

Agradeço qualquer ajuda

Você pode começar arrumando a endentação e dividindo em rotinas menores.

Só de colocar o código no Eclipse, pedir para formatar e eliminando uns warnings, já ficou um pouquinho mais claro…
Como disse o Vini, quebrar sua função em funções menores é o primeiro passo…

“A primeira regra das funções é que tem de ser pequenas.
A segunda regra das funções é que elas têm de ser ainda menores.”

Sugiro que você leia CleanCode e Effective Java.

package acesso;

import java.io.*;
import java.net.*;
import java.util.Timer;
import java.util.TimerTask;

public class Acesso {

        // Metodos não começam com caixa alta
        // Funções só podem fazer uma coisa por vez (Clean Code)
        // Use Unchecked Exceptions ao invés de Checked (Clean Code) - sugiro vc capturar e lançar uma exceção não checada
	public void Apaga() throws IOException {  
		URL url = new URL(
				"http://tst.fateci.com.br/academico/desenvolve/fotos/delete.php");
		URLConnection amp_apaga = url.openConnection();
		amp_apaga.connect();
	}

	public static final long TEMPO = (100 * 60);

	public static void main(String[] args) throws MalformedURLException,
			IOException {

		final Acesso ap = new Acesso();
		Timer timer = null;
		if (timer == null) {
			timer = new Timer();
			TimerTask tarefa = new TimerTask() {
				public void run() {

					try {

						URL amplus = new URL(
								"http://tst.fateci.com.br/academico/desenvolve/fotos/dados.txt");
						URLConnection amp = amplus.openConnection();
						amp.setConnectTimeout(7000);
						amp.connect();
						BufferedReader in = new BufferedReader(
								new InputStreamReader(amp.getInputStream(),
										"ISO-8859-1"));
						StringBuilder lines = new StringBuilder();
						String line;
						for (line = in.readLine(); line != null; line = in
								.readLine()) {
							lines.append(line).append("\n\r");
						}
						in.close();

						if (lines.length() == 0) {    // O que é isso, um if sem corpo com else em seguida???
						} else {

							ap.Apaga();
							FileOutputStream outputFile = new FileOutputStream(
									"LPT1:");
							PrintWriter out = new PrintWriter(outputFile);
							out.print(lines);
							out.flush();
							outputFile.close();
							out.close();

							// System.out.println(lines);
						}
					} catch (MalformedURLException me) {
					} catch (IOException ioe) {

					}
				} // fechou run
			}; // fechou TimerTask
			timer.scheduleAtFixedRate(tarefa, TEMPO, TEMPO);
		}
	}
}

Versão 2.0:

Boa? Não… menos pior… dá para melhorar muito, criar outras classes, mudar nomenclatura de classes, métodos e variáveis, criar exceções não checadas, abstrair um pouco mais… Mas só de quebrar alguns métodos já deu uma outra cara…
Eu não testei, por favor veja se funciona.
Vc não tratava corretamente uns fechamentos de inputs e outputs…

package acesso;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Timer;
import java.util.TimerTask;

public class Acesso {

	private URL page;

	public static final String PAGE_DELETE = "http://tst.fateci.com.br/academico/desenvolve/fotos/delete.php";
	public static final String PAGE_DATA = "http://tst.fateci.com.br/academico/desenvolve/fotos/dados.txt";

	public Acesso(String page) throws MalformedURLException {
		this.page = new URL(page);
	}

	public InputStream acessaPaginaComTimeout(int timeout) throws IOException {
		URLConnection connection = page.openConnection();
		if(timeout > 0) {
			connection.setConnectTimeout(timeout);
		}
		connection.connect();
		return connection.getInputStream();
	}	

	public InputStream acessaPagina() throws IOException {
		return acessaPaginaComTimeout(0);
	}

	public static void main(String[] args) throws MalformedURLException {

		final long TEMPO = (100 * 60);

		Timer timer = null;
		if (timer == null) {
			timer = new Timer();
			TimerTask tarefa = new TimerTask() {
				
				private final Acesso pageDelete = new Acesso(PAGE_DELETE);		
				private final Acesso pageData = new Acesso(PAGE_DATA);

				public void run() {
					try {
						readAndDeletePage(pageDelete, pageData);
					} catch (IOException e) {
						e.printStackTrace();
					}
				}

				private void readAndDeletePage(final Acesso pageDelete,
						final Acesso pageData) throws IOException {
					InputStream input = pageData.acessaPaginaComTimeout(7000);
					String lines = readLine(input);
					if (lines.length() > 0) {
						pageDelete.acessaPagina();
						writeLPT(lines);
					}
				}

				private void writeLPT(String lines) throws IOException {
					FileOutputStream outputFile = null;
					PrintWriter writer = null;
					try {
						outputFile = new FileOutputStream("LPT1:");
						writer = new PrintWriter(outputFile);
						writer.print(lines);	
						writer.flush();
					} catch (FileNotFoundException e) {
						e.printStackTrace();
					} finally {
						closeFile(outputFile);
						closeWriter(writer);
					}					
				}

				private String readLine(InputStream inputStream) {
					try {
						return readInput(inputStream);												
					} catch (Exception e) {
						e.printStackTrace();
					} finally {
						closeInput(inputStream);
					}
					return "";
				}

				private String readInput(InputStream inputStream)
				throws UnsupportedEncodingException, IOException {
					BufferedReader in;
					StringBuilder lines;
					in = new BufferedReader(new InputStreamReader(inputStream,
					"ISO-8859-1"));
					lines = new StringBuilder();
					for (String line = in.readLine(); line != null; line = in.readLine()) {
						lines.append(line).append("\n\r");
					}
					return in.toString();
				}

				private void closeFile(OutputStream out) {
					try {
						if(out != null) {
							out.close();
						}
					} catch (IOException e) {
						e.printStackTrace();
					}
				}				

				private void closeInput(InputStream in) {
					try {
						if(in != null) {
							in.close();
						}
					} catch (IOException e) {
						e.printStackTrace();
					}
				}

				private void closeWriter(Writer writer) {
					try {
						if(writer != null) {
							writer.close();
						}
					} catch (IOException e) {
						e.printStackTrace();
					}
				}				

			}; 

			timer.scheduleAtFixedRate(tarefa, TEMPO, TEMPO);
		}
	}
}

valeu, com certeza irei seguir essas dicas!
Vou postar aqui o codigo mehorado.

Antonio