Ler determinada linha de um arquivo [Resolvido]

4 respostas
silva.fernandes

Pessoal, fiz um método para ler um arquivo txt linha a linha. Porém agora eu quero que ele leia somente determinadas linha que comecem por exemplo com 01.

Alguem pode dar um empurrãozinho ?
public static void readFile(String filename) {
		try {
		File arquivo = new File(filename);
		FileInputStream   fileInputStream = new FileInputStream(arquivo);
 		InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
 		LineNumberReader  lineNumberReader= new LineNumberReader(inputStreamReader);
 		String linha;
			while(lineNumberReader.ready()) {
				linha = lineNumberReader.readLine();
				System.out.println(linha);
				
			}
		} catch (FileNotFoundException fileNotFoundException) {
			fileNotFoundException.printStackTrace();
		} catch (IOException ioException) {
			ioException.printStackTrace();
		}

Eu acho que seria a classe LineNumberReader, mas não achei nada na documentação, ou será q estou cego ? :shock:

Grato

T+

4 Respostas

_Renatu

Nem sabia que existia essa classe ehehhe

mas, segundo a documentação,

http://java.sun.com/j2se/1.4.2/docs/api/java/io/LineNumberReader.html

o método setLineNumber() resolve seu problema.

ViniGodoy

Na verdade, a documentação é bem clara ao dizer que o método setLineNumber não altera a posição do stream, somente o valor retornado por getLineNumber().

Uma das maneiras de se fazer isso é usar um Scanner e montar uma expressão regular. Outra seria continuar lendo linha-a-linha mas só imprimir as linhas que te interessam.

Se nada disso te agradar, dê uma olhada também nas classes RandomAccessFile e FileChannel, elas são outras formas de se lidar com arquivos e podem te ajudar.

silva.fernandes

É gente, uma coisa tão simples acabamos imaginando algo tão complicado.

Na verdade do meu arquivo txt eu quero extrair as linhas que começam por exemplo por 01.

Acho que é mais facil fazer assim né …

while (lineNumberReader.ready()) { linha = lineNumberReader.readLine(); if (linha.substring(0, 2).equals("01")) { System.out.println(linha); }

Assim ele irá me retornar somente as linhas que satisfaçam o if.

Tão simples … eu eu imaginando algo tão cabuloso

:shock:

Mesmo assim valeu gente !!!

ViniGodoy

É isso mesmo, vc usou a minha terceira dica:

Criado 13 de fevereiro de 2007
Ultima resposta 14 de fev. de 2007
Respostas 4
Participantes 3