Duvida com BufferedReader

2 respostas
malves_info

Ae galera, estou utilizando o BufferedReader para retornar os dados de um arquivo, e este arquivo contém mais ou menos umas 50 linhas, vi que utilizando um While(bufferedReader.ready()) eu percorro todas as linhas do arquivo. Mas eu não queria percorrer todas as linhas e sim acessar de cara a ultima linha, teria como fazer isso?

[]'s

2 Respostas

T

Para você chegar à última linha, tem de passar por todas mesmo.

Tente não usar "ready" para percorrer um BufferedReader; isso pode dar problemas se o BufferedReader encapsula um socket, por exemplo. Em vez disso, faça mais ou menos como abaixo.*

String ultimaLinha = "";
BufferedReader br = ...;
for (String s = br.readLine(); s != null; s = br.readLine()) {
     ultimaLinha = s;
}
br.close();
System.out.println ("A ultima linha é " + ultimaLinha);
  • Note que normalmente seu requisito é "quero a última linha que não seja vazia", não exatamente "quero a última linha". Num caso desses, você faria algo como:
String ultimaLinha = "";
BufferedReader br = ...;
for (String s = br.readLine(); s != null; s = br.readLine()) {
     if (s.trim().length() > 0)
         ultimaLinha = s;
}
br.close();
System.out.println ("A ultima linha é " + ultimaLinha);

Outra forma é você abrir o arquivo como um RandomAccessFile e começar a andar "de trás para frente" no arquivo. Só recomendaria isso se você tiver paciência de ficar andando no arquivo e ficar localizando os separadores de linhas byte a byte; um exemplo de programa que faz isso no Unix é o famoso "tail", que pega só as últimas linhas.

malves_info

Blz… Valeu pela ajuda!!!

[]'s

Criado 2 de junho de 2009
Ultima resposta 2 de jun. de 2009
Respostas 2
Participantes 2