Split and save large file

Identificador: 11553
Autor: Ricardo Bocchi   segunda-feira, Dia 1 de maio de 2023, às 02:53:34 horas
Revisado Por:    quarta-feira, Dia 22 de fevereiro de 2017, às 23:11:47 horas
Visualização: Todos

Pontos: 0   Acessos: 4991


Código em java para salvar um arquivo em várias partes.



File src = new File("/path/to/large/file.mp4");
InputStream in = new FileInputStream(src);

final int mb = 1048576; // 1MB
final int kb = 1024 * 4; // max buffer size
final int partSize = mb * 5; // max part size 5MB
byte[] buf = new byte[kb];
int len = 0;

int partCount = in.available() / partSize;

if(in.available() % partSize > 0)
    partCount++;                       

for(int i = 0; i < partCount; i++){

    ByteArrayOutputStream bStream = new ByteArrayOutputStream();
    int read = 0;

    while ((len = in.read(buf)) > 0) {
   
        read += len;
   
        bStream .write(buf, 0, len);

        if(read >= partSize){
            read = 0;
            break;
        }
    }                       

    File filePartSrc = new File("/path/to/file/parts/file_" + i + ".part");
    FileOutputStream fo = new FileOutputStream(filePartSrc);
    fo.write(bStream.toByteArray());
    fo.flush();
    fo.close();
    bStream.close();                                            
}

in.close();