2012-07-06 15 views
6

Sto lavorando a un'applicazione Android che può scaricare file in diversi segmenti paralleli. Li ho separatamente, e ora voglio unirli tutti insieme.Android: unione di file multipart per creare un singolo file

Per essere più chiari, ti mostrerò un semplice esempio. Diciamo che ho scaricato il file 100kb in 4 segmenti. Il primo segmento va da 0kb a 25kb, il secondo da 25kb a 50kb, il terzo da 50kb a 75kb e l'ultimo segmento da 75kb-100kb. Filetype può essere mp3, avi ed ecc.

Ora devo unirmi a loro in modo che quei segmenti (parti di file) diventino un singolo file. Spero tu mi possa aiutare con questo. Grazie per il tuo tempo!

Modifica: per un esempio è più simile ai file avi segmentati (xxx.avi.001, xxx.avi.002, xxx.avi.003) che a volte scarichiamo nel nostro PC e uniamo i file usando HJSplit in un unico file .

+0

È un file di testo in chiaro (o qualcosa di simile)? – matt5784

+1

può essere qualsiasi cosa! per lo più file mp3 – don

+0

@ user1122359 hai qualche soluzione? –

risposta

3

Provare in questo modo, leggere da un file separato uno per uno e scrivere in un unico file. sotto semplice codice per la vostra comprensione. prova questo, spero che funzionerà per te. puoi migliorare questo codice.

InputStream in1 = new FileInputStream("sourceLocation1"); 
    InputStream in2 = new FileInputStream("sourceLocation2"); 
    InputStream in3 = new FileInputStream("sourceLocation3"); 
    InputStream in4 = new FileInputStream("sourceLocation4"); 

    OutputStream out = new FileOutputStream("targetLocation"); 

    // Copy the bits from instream to outstream 
    byte[] buf = new byte[1024]; 
    int len; 

    while ((len = in1.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 

    while ((len = in2.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 

    while ((len = in3.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 

    while ((len = in4.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 

    in1.close(); 
    in2.close(); 
    in3.close(); 
    in4.close(); 
    out.close(); 
1

Prova RandomAccessFile. Ha funzioni potenti e flessibili in modo che tu possa leggere o scrivere il file nella posizione esatta del byte.