Quebrar um arquivo grande e arquivos menores

3 respostas
E

Foi solicitado que seja desenvolvido em Java uma aplicação que dado um
arquivo (video.avi, por exemplo) divida-o em arquivos menores
(video.001, video.002, …).

Deve ser entrada o nome do arquivo e o tamanho máximo dos arquivos
menores.

Exemplo
Arquivo: video.avi
Tam. Máx: 100.000

, onde o video.avi teria o tamanho de 100.000 e seria dividido em 10 ou mais
arquivos menores .

Alguem pode me ajudar e informar com que API do java eu posso fazer isso ?

Se alguem tem um exemplo aí … Agradeço a quem ajudar !!!

3 Respostas

I

Basicamente vais ter uma classe de leitura que tenha parametrizado a quantidade de bytes para cada arquivo e a medida que este valor for alcançado deves iniciar a escrita em outro arquivo. Seria algo do tipo:

private void perform(final String path, final String outputName, final int fileSize) throws Exception {
    
    final FileInputStream fis = new FileInputStream(path);
    final byte[] buffer = new byte[fileSize];
    int counter = 1;
    String name;
    while (fis.read(buffer) != -1) {
        name = outputName + (counter++);
        System.out.print("Writing file: " + name);
        new FileOutputStream(name).write(buffer);
        System.out.println(" Done!");
    }

}

//...
perform("/temp/damnit.avi", "file-part.", 10485760);
//...

Espero que te ajude, T+

E

Vc poderia me dar mas alguma força !?

Quanto a cópia do arquivo tudo bem …so não tneho idéia de como iria fazer para criar os arquivos cada vez que ele alcansace a quantidade de bytes desejado …

Agradeço

I

Não sei se entendi a tua dúvida, mas acho que o programa já faz isso. A declaração do array de bytes “buffer” é a porção do arquivo lido a cada iteração. Ali no exemplo da chamada coloquei 10M, ou seja, a cada 10M lidos ele vai criar uma nova parte do arquivo maior. T+

Criado 29 de novembro de 2006
Ultima resposta 29 de nov. de 2006
Respostas 3
Participantes 2