2012-07-06 4 views
6

Estoy trabajando en una aplicación de Android que puede descargar archivos en varios segmentos paralelos. Los tengo por separado, y ahora quiero unirlos a todos juntos.Android: unir archivos de varias partes para crear un único archivo

Para ser más claro, se lo mostraré con un simple ejemplo. Digamos que descargué un archivo de 100kb en 4 segmentos. El primer segmento es de 0kb a 25kb, el segundo es de 25kb a 50kb, el tercero es de 50kb a 75kb y el último segmento es de 75kb a 100kb. Filetype puede ser mp3, avi y etc.

Ahora necesito unirme a ellos para que esos segmentos (partes de archivo) se conviertan en un único archivo. Espero que puedas ayudarme con esto. ¡Gracias por tu tiempo!

Editar: por ejemplo, es más parecido a los archivos avi segmentados (xxx.avi.001, xxx.avi.002, xxx.avi.003) que a veces descargamos en nuestra PC y unimos los archivos usando HJSplit en un solo archivo .

+0

¿Es un archivo de texto plano (o algo similar)? – matt5784

+1

puede ser cualquier cosa! en su mayoría archivos mp3 – don

+0

@ user1122359 tiene alguna solución? –

Respuesta

3

Pruebe de esta manera, lea el archivo por separado uno por uno y escriba en un archivo. debajo del código simple para su comprensión. prueba esto, espero que funcione para ti. puede mejorar este código.

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

Trate RandomAccessFile. Tiene funciones potentes y flexibles para que pueda leer o escribir el archivo en la posición de byte precisa.

Cuestiones relacionadas