Arquivos

3 respostas
Andre_Brito

Galera, eu fiz uma classe Teste que, eu acredito né, leia um arquivo txt e percorra o mesmo, para ver se a palavra entrada existe no arquivo ou não.
Segue o código:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;


public class TesteOutro
{
    private BufferedReader leitor;
    private String linha;
    private String entrada;
    
    public TesteOutro(String novaEntrada)
    {
        linha = "";
        this.entrada = novaEntrada;
    }
    
    public boolean existe()
    {
        // --------------------------------
        // Lê o arquivo teste.txt
        // --------------------------------        
        try {
            leitor = new BufferedReader(new FileReader("lista.txt"));
            // --------------------------------            
            // Enquanto a linha do arquivo for diferente da entrada pelo usuario
            // --------------------------------            
            while (!linha.equals(entrada))
            {
                linha = leitor.readLine();
            }
            leitor.close();
            return true;
        }
        // --------------------------------            
        // Caso não encontre o arquivo
        // --------------------------------            
        catch( FileNotFoundException e ) {
            return false;
        }
        // --------------------------------            
        // Entrada do usuário é inválida
        // --------------------------------                    
        catch ( IOException e ) {
            return false;
        }
    }
    
    public void leLinha()
    {
        System.out.println("linha = " + linha + ".");
    }
}

Minha dúvida é: esse código está bem estruturado? Eu estou receoso com isso porque está praticamente tudo em um método. Ele funciona, mas queria saber se está conciso e se isso respeita as “regras” de acoplamento, coesão e design dirigido por responsabilidade.

E também… quando eu digito uma palavra que não existe no arquivo, dá NullPointerException. O IOException não deveria cuidar disso?

Abraço.

3 Respostas

Ironlynx

Tudo o que? É apenas uma leitura e pesquisa em arquivo, não há porque ir se preocupando em isolar tudo a todo o tempo.
Mas vc pode criar um método só de pesquisa, se a coisa se refinar.Ponha o fechamento do fluxo(arquivo) numa cláusula finally.

Já que vc quer isolar tudo, crie uma exception personalizada para isso.PalavraNotFoundException, por exemplo.

Andre_Brito

Corrigido :smiley:
E me conforta saber que não estou violando as “regras”.
Quanto ao NullPointerException, eu fiz um catch pra ele. Isso não é gambiarra, é?

Só pra levantar mais uma dúvida: para eu abrir um arquivo .html não funcionaria da mesma maneira, né??

Andre_Brito

Só mais uma coisa:

Para diversos arquivos, como eu faria para ler?

Abraços.

Criado 18 de novembro de 2007
Ultima resposta 18 de nov. de 2007
Respostas 3
Participantes 2