| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 10:22:59
|
Loiane
Moderador
![[Avatar]](/images/avatar/55a77244056c29c170b5194bbb91cb59.jpg)
Membro desde: 29/05/2008 10:18:04
Mensagens: 306
Localização: São Paulo
Offline
|
Olá,
Existe alguma maneira no Java de saber a quantidade de linhas que um arquivo tem?
E existe alguma forma de ir diretamente para determinada linha?
Tenho um arquivo de 700 mil linhas (em média) e preciso fazer validação na última linha antes de começar a validar as linhas anteriores.
Se fizer isso de forma sequencial fica muito custoso.
Obrigada
|
Java/Ext JS developer
Blog pt-br: http://www.loiane.com
Blog inglês: http://loianegroner.com
Twitter: http://twitter.com/loiane
Linkedin: http://www.linkedin.com/in/loiane
Autora do Livro Ext JS 4 First Look: http://www.packtpub.com/ext-js-4-first-look/book
Ext JS 4 First Look na Amazon: http://amzn.com/1849516669
Curso ExtJS 4 Gratuito em Português: http://bit.ly/s5S0Oj |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 10:27:03
|
quikkoo
JavaEvangelist
![[Avatar]](/images/avatar/f30402d250ee0d24b57be8e69299e1f9.png)
Membro desde: 30/10/2006 21:10:14
Mensagens: 406
Localização: minas
Offline
|
se vc fala de um arquivo texto crú, o único jeito que eu conheço é percorrer todo o arquivo contando os '\n'
|
the_book->is_on(the_table); |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 10:28:04
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Se o arquivo tiver todas as linhas de um mesmo tamanho (por exemplo, um arquivo CNAB, onde normalmente só a primeira linha tem comprimento diferente das demais), então você consegue ir diretamente para um determinado ponto do arquivo usando RandomAccessFile (não FileReader, que tem de ler o arquivo seqüencialmente).
Se as linhas forem de comprimento diferente, então você teria de ler seqüencialmente mesmo, ou talvez criar um segundo arquivo (diria um "arquivo de índice") indicando onde está o início de cada linha. Esse arquivo obviamente teria de ser criado lendo-se seqüencialmente o arquivo original uma vez, mas depois disso você poderia usá-lo para saber onde ir.
Se o arquivo tem 700.000 linhas mas está em formato XML, o problema é só um "pouquinho" pior. Nesse caso, eu recomendaria o uso de SAX ou STAX (não é aquele salgadinho parecido com o Pringles não :P ).
Em particular acho mais fácil usar STAX que SAX.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 10:38:04
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Se o seu problema for "ler a última linha" dá para fazer isso usando uma gambiarra bastante grande. Abra o arquivo com RandomAccessFile e và lendo o arquivo byte por byte, de trás para frente, até encontrar um caracter "\n" (o byte 0x10). Isso quer dizer que você achou a última linha. (Pode ser que você já o encontre logo de cara, porque a última linha foi terminada com "\n". Se for esse o caso, então ache o segundo "\n". Quando você achar o segundo "\n", você terá lido apenas e tão somente a última linha. É meio nojento mas deve funcionar. Não esqueça de ir acumulando os bytes que você leu, é claro.
This message was edited 1 time. Last update was at 29/05/2008 10:38:46
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 12:04:28
|
Loiane
Moderador
![[Avatar]](/images/avatar/55a77244056c29c170b5194bbb91cb59.jpg)
Membro desde: 29/05/2008 10:18:04
Mensagens: 306
Localização: São Paulo
Offline
|
Vou pesquisar sobre essa classe.
Obrigada pela ajuda!
|
Java/Ext JS developer
Blog pt-br: http://www.loiane.com
Blog inglês: http://loianegroner.com
Twitter: http://twitter.com/loiane
Linkedin: http://www.linkedin.com/in/loiane
Autora do Livro Ext JS 4 First Look: http://www.packtpub.com/ext-js-4-first-look/book
Ext JS 4 First Look na Amazon: http://amzn.com/1849516669
Curso ExtJS 4 Gratuito em Português: http://bit.ly/s5S0Oj |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2011 10:55:06
|
gmmascarin
Debugger
![[Avatar]](/images/avatar/dc2603dc4055d4066c07967f6e90e2fb.jpg)
Membro desde: 03/02/2011 22:32:39
Mensagens: 64
Localização: Araraquara/SP
Offline
|
Loiane
Sei que esse tópico é antigo, mas vou responder essa dúvida para aqueles que tiverem o mesmo problema futuramente e passarem por aqui.
[]s
|
System Analyst
Oracle Certified Professional - Java SE 6 Programmer
Oracle Certified Professional - Java EE 5 Web Component Developer
Oracle Certified Expert, Java Platform, Enterprise Edition 6 Enterprise JavaBeans Developer (EM BREVE) |
|
|
 |
|
|