Ler grupo de caracteres de arquivo > 30GB - tem como sem saber o tamanho total? [RESOLVIDO]  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
alexcostars
JavaTeenager
[Avatar]
Membro desde: 10/01/2009 13:08:13
Mensagens: 183
Localização: Rio Grande do Sul
Offline

Pessoal. Estou lendo um arquivo um tanto grande (> 30GB), que só possui uma linha. Precisava dividir o texto desse arquivo em arquivos menores de 6 dígitos cada.

Não posso ler linha a linha, pois só tem 1, e o Java não ia gostar nada de guardar 30GB de informação em uma única string.

Também não posso ler o arquivo usando como referência seu tamanho (ex: continuar enquanto tamanho for maior que 0), pois acredito que nem eu um BigInteger cabe a quantidade de caracteres que possui um arquivo de 30GB.

Eu estava lendo caractere por caractere, só parando a leitura quando o caractere fosse null, mas como podem ver, isso não é a melhor maneira de se fazer isso.

Queria ler um grupo x (no caso: 6) de caracteres por vez (se possível), mas não posso me basear no tamanho do arquivo ou quanto falta para acabar. Tentei umas gambiarras do tipo: continuar enquanto o valor lido for diferente de null, mas não ta dando.


Preciso de ajuda, to bem perdido nisso. Se alguém tiver um código que me ajude, vai se muito bem vindo.


Muito obrigado

This message was edited 1 time. Last update was at 12/03/2010 14:35:56


eliangela
Virtual Machine Man
[Avatar]

Membro desde: 30/04/2006 01:31:49
Mensagens: 724
Localização: Campo Mourão
Offline

Pelo que eu entendi, vc quer ler o arquivo de 6 em 6 bytes...
Fiz um pequeno código lendo de 6 em 6 bytes.

Na parte onde está System.out.println(Arrays.toString(bytes)); vc pode substituir pelo código que irá gravar em um novo arquivo.



espero ter ajudado

Não respondo perguntas por MP.
http://www.eliangela.info
[WWW] [Yahoo!] [MSN]
alexcostars
JavaTeenager
[Avatar]
Membro desde: 10/01/2009 13:08:13
Mensagens: 183
Localização: Rio Grande do Sul
Offline

eliangela wrote:Pelo que eu entendi, vc quer ler o arquivo de 6 em 6 bytes...
Fiz um pequeno código lendo de 6 em 6 bytes.

Na parte onde está System.out.println(Arrays.toString(bytes)); vc pode substituir pelo código que irá gravar em um novo arquivo.



espero ter ajudado


Ok, vlw pela ajuda, vou testar.

vlw

This message was edited 1 time. Last update was at 12/03/2010 14:32:06


maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

Arrays é uma classe, toString é um método que converte o parâmetro passado em uma string.

)'] documentação

This message was edited 3 times. Last update was at 12/03/2010 14:32:26


espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
alexcostars
JavaTeenager
[Avatar]
Membro desde: 10/01/2009 13:08:13
Mensagens: 183
Localização: Rio Grande do Sul
Offline

maior_abandonado wrote:Arrays é uma classe, toString é um método que converte o parâmetro passado em uma string.

)"] documentação


Mal aew, coloquei lá no Eclipse daí eu fui ver.

Kra, testei e ficou perfeito, tu caiu do céu.

Vlw msm, abrass.

entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Leia este programa e veja por que é que você nunca deve ler 1 byte de cada vez, nem é preciso saber o tamanho do arquivo anteriormente.

 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team