Quantas linhas existem em um arquivo

3 respostas
Guitar_Men

Tenho uma aplicação que lê um arquivo texto e faz uma série de processamentos. Preciso descobrir quantas linhas tem o arquivo, existe alguma forma mais “elegante” sem ter que percorrer o arquivo inteiro e incrementando um contador no braço ??

Valew galera

3 Respostas

T

A resposta simples é “não”. Uma forma alternativa, se é que você quer algo mais rápido, é você ler o arquivo em formato binário e contar os caracteres 0x10 que existem nesse arquivo. Mas aí você teria de ler o arquivo só para contar o número de linhas, fechá-lo, e depois lê-lo novamente, o que é muito mais lento que ir processando o arquivo e contando as linhas.

Guitar_Men
thingol:
A resposta simples é "não". Uma forma alternativa, se é que você quer algo mais rápido, é você ler o arquivo em formato binário e contar os caracteres 0x10 que existem nesse arquivo. Mas aí você teria de ler o arquivo só para contar o número de linhas, fechá-lo, e depois lê-lo novamente, o que é muito mais lento que ir processando o arquivo e contando as linhas.
Poutz mas ai me parece muito xunxo... eu achei uma outra forma aqui no fórum do guj mesmo e queria uma opinião sobre ela:
try { 
File arquivoLeitura = new File("url do seu arquivo"); 

// pega o tamanho 
long tamanhoArquivo = arquivoLeitura .length(); 
FileInputStream fs = new FileInputStream(arquivoLeitura); 
DataInputStream in = new DataInputStream(fs); 


LineNumberReader lineRead = new LineNumberReader(new InputStreamReader(in)); 
lineRead.skip(tamanhoArquivo); 
// conta o numero de linhas do arquivo, começa com zero, por isso adiciona 1 
numLinhas = lineRead.getLineNumber() + 1; 
System.out.println("O ARQUIVO CONTEM " + numLinhas + " LINHAS!!!!!!!"); 

} catch (IOException e) { 
//TODO: Tratar exceção 
}
no link [url]http://www.guj.com.br/posts/list/18796.java[/url]
T

Ora, LineNumberReader é um BufferedReader que conta as linhas enquanto está lendo. Pode usar sem medo.

Criado 16 de março de 2009
Ultima resposta 16 de mar. de 2009
Respostas 3
Participantes 2