Boa Tarde Gente,
Estou trabalhando em projeto, e eu preciso dividir um arquivo de texto em partes iguais, eu tenho um algoritmo que ler e imprime o texto na tela do netbeans, eu quero poder dividir esse texto em partes iguais, por exemplo um arquivo txt de 10MB, quero dividi-lo em 5MB e 5MB, assim eu vou poder processar 5MB em uma máquina e 5MB em outra usando distribuição. quem poder me ajudar com tutoriais, algoritmos e sites relacionados agradeço.
Você sabe o tamanho.
A metade é só dividir o tamanho por 2.
Percorra o arquivo até chegar na metade e vá guardando em um arquivo. Chegou na metade, passe a guardar em outro arquivo.
Generalize isso e você conseguirá dividir o arquivo em quantas partes quiser.
[]'s
Fiz bem rápido… Você pode melhorar várias coisas, mas o caminho é esse.
Dá uma olhada:
[code]import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
/**
*
-
@author David Buzatto
*/
public class Foo {
public static void main( String[] args ) {
try {
File inFile = new File( "C:/x.txt" );
FileReader fr = new FileReader( inFile );
long tamanhoTotal = Files.size( inFile.toPath() );
int quantidade = 2;
long tamanhoPorArquivo = tamanhoTotal / quantidade;
long tamanhoUltimoArquivo = tamanhoPorArquivo + (tamanhoTotal % quantidade);
long maximo;
for ( int i = 0; i < quantidade; i++ ) {
if ( i == quantidade - 1 ) {
maximo = tamanhoUltimoArquivo;
} else {
maximo = tamanhoPorArquivo;
}
File arquivoAtual = new File( "C:/p" + i + ".txt" );
FileWriter fw = new FileWriter( arquivoAtual );
for ( int j = 0; j < maximo; j++ ) {
fw.write( fr.read() );
}
fw.close();
}
fr.close();
} catch ( IOException exc ) {
exc.printStackTrace();
}
}
}[/code]
[]'s
Fiz o teste e deu certo, muito obrigado pela segunda vez, o que você acha que devo melhorar no seu algoritmo para deixa-lo mais robusto? não quero que faça só me mostre o caminho, se não fica muito facil…rs…mais uma vez obrigado!
O caso nem é deixar mais robusto, mas deixar mais genérico.
Por exemplo, criar um método que faça o serviço, com um parâmetro para representar o arquivo de entrada, um para estipular em quantas partes se quer dividir o arquivo. Os arquivos de saída também podem ser gerados com base no diretório do arquivo de entrada definido. Essas coisas entendeu? Deixando mais genérico vc pode reaproveitar em outros projetos.
[]'s