• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

anonimou

Dividir ficheiro de texto de grandes formatos sem partir as linhas

2 mensagens neste tópico

Olá a todos,

Estou com um grave problema...

Preciso desenvolver uma aplicação para dividir um ficheiro de texto em quantas partes o utilizador quiser e gravar os conteudos das divisões noutros ficheiros.

Exemplo: ter um ficheiro de texto orginal de 100 mgbs e dividir este ficheiro em 10 ficheiros de 10mgbs

Só que estas divisões não podem cortar o conteudo das linhas.

Até aqui não tenho problemas em desenvolver o código, escrevo primeiro um código para contar o número total de linhas do ficheiro de texto e em seguida mando cortar o ficheiro "NºLinhas total/nº ficheiros eu quero".

Só que os meus ficheiros de textos podem ter até 20 gbs de informação...

Tentei por a ler e gravar os ficheiros por blocos de memoria  de 2 mbs mas desta maneira pode me cortar uma linha e passar o restante dessa linha para o próximo ficheiro...

alguem me pode ajudar neste assunto?

Obrigado,

Délio Pontes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imagina que o tamanho de bloco que foi dado é guardado em BLOCK_SIZE.

Guardas a posição inicial do bloco actual em 'start' (inicialmente será 0). Depois fazes fseek() para 'start+BLOCK_SIZE' e começas a andar para trás char a char até encontrares a quebra de linha. Guardas isso em end.

Agora, basta-te copiar (usando um loop) o bloco que 'start' até 'end'.

Quando isso estiver copiado, mudas de ficheiro de destino, fazes start = end e recomeças.

Assim os ficheiros terão uns bytes a menos que o tamanho dado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora