Divisão de arquivos de texto em partes iguais

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