Classe mais perfomática possível para leitura randômica de arquivo texto.  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
dreampeppers99
Virtual Machine Man
[Avatar]

Membro desde: 29/08/2006 21:50:17
Mensagens: 523
Offline

Tenho o seguinte cenário:

Arquivos de texto puro que variam de 164MB (100.000 linhas) à 1.6GB (1.000.000 linhas)!
Hoje faço a leitura dessa forma!


Acredito que possa haver outra forma (pelo pacote nio só encontre como fazé-lo com leitura sequencial [usando os channels]) mais perfromática, conhecem?

Obrigado desde já!

This message was edited 1 time. Last update was at 06/07/2009 12:12:59


- Não respondo dúvida por PM!
- Blog -> Software development - Clojure, Ruby, Java, Test and little pumpkins
- Blog - Desenvolvimento de software - Java
[WWW]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Você precisa ler o arquivo sequencialmente, ou você precisa localizar uma linha qualquer dentro do arquivo?
As linhas têm comprimento fixo?
Qual é o seu requisito?

Se você precisa localizar uma linha qualquer dentro do arquivo, e você sabe que as linhas têm comprimento fixo (por exemplo, um arquivo CNAB), você pode fazer algumas contas, e continuar a usar RandomAccessFile. Essa seria a maneira mais simples.

Se você não sabe o tamanho de cada linha, e precisa acessar ao acaso uma linha qualquer dentro do arquivo (não sequencialmente), você tem então de ler primeiramente todo o arquivo e criar um segundo arquivo, só com os números e deslocamentos das linhas (use um DataOutputStream e writeInt para gastar 4 bytes por número de linha). . Então você procura a linha 5.678.893 (por exemplo) no segundo arquivo, que diríamos ser um arquivo "de índice", para achar o deslocamento correspondente à linha 5.678.893.
[WWW]
dreampeppers99
Virtual Machine Man
[Avatar]

Membro desde: 29/08/2006 21:50:17
Mensagens: 523
Offline

Você precisa ler o arquivo sequencialmente, ou você precisa localizar uma linha qualquer dentro do arquivo?
Uma linha qualquer dentro do arquivo! (randômico mesmo)
As linhas têm comprimento fixo?
Sim

Então o RandomAccessFile seria o ideal no mínimo mais simples! Penso que na performance ele não deve perder muito para as outras classes (do pacote nio), estou certo?

This message was edited 2 times. Last update was at 06/07/2009 12:38:52


- Não respondo dúvida por PM!
- Blog -> Software development - Clojure, Ruby, Java, Test and little pumpkins
- Blog - Desenvolvimento de software - Java
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team