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?
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.*
StringultimaLinha="";BufferedReaderbr=...;for(Strings=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:
StringultimaLinha="";BufferedReaderbr=...;for(Strings=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.