NIO para ler Strings  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
fabio.patricio
GUJ Master

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

Pessoal,

Alguem tem links, documentacoes ou mesmo alguma API que trabalhe com NIO para ler arquivos String?

To querendo construir algo para ler linha a linha arquivos texto grandes (>400MB).
Eu até ja construi uma classe que faz isso, mas ainda nao testei se ficou boa. Tava pensando em comparar o tempo contra uma leitura usando as classes IO normal.

Outra dúvida, qual o impacto que mapear um arquivo deste tamanho todo para memoria e trabalhar com ele assim. Seria somente a memoria gasta?

Meu maior problema é que eu posso precisar fazer o parse de varios arquivos deste em pouco tempo. Ainda nao avaliei se multi thread nesse caso ajuda ou nao.

Qualquer ajuda/comentario/link é bem vinda(o).

]['s

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
thingol
Moderador

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

Acho que usando um BufferedReader mesmo, com um buffer um pouco maior que o padrão, é melhor. (O buffer padrão do BufferedReader é de 8192 caracteres = 16KBytes, você pode aumentá-lo para 1M se for o caso)

Não acho que seja legal carregar para memória um arquivão desses.

Você não está reinventando a roda e fazendo seu próprio parser XML não? Cuidado com o método substring da classe String (veja o fonte do java.lang.String para entender).

This message was edited 1 time. Last update was at 24/08/2005 13:08:32

[WWW]
fabio.patricio
GUJ Master

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

thingol wrote:Você não está reinventando a roda e fazendo seu próprio parser XML não? Cuidado com o método substring da classe String (veja o fonte do java.lang.String para entender).


Nao, o objetivo nao tem nada a ver com XML.

Vou ver se faco uns testes com a BufferedReader.

]['s
[WWW] [MSN] [ICQ]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Você pode usar CharBuffers e CharsetEncoder/Decoder. Mas já adianto, é um SACO e vc tem que REALMENTE estar com SÉRIOS problemas de performance.

Você só vai notar diferença de performance realmente significativa se usar o arquivo mapeado em memória. Vale lembrar que pra ficar bom vc vai precisar de 400megas de ram só pra isso.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team