NIO para ler Strings

3 respostas
F

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

3 Respostas

T

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).

F

thingol:
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. :smiley:

Vou ver se faco uns testes com a BufferedReader.

]['s

louds

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.

Criado 24 de agosto de 2005
Ultima resposta 24 de ago. de 2005
Respostas 3
Participantes 3