2012-07-06 15 views
6

Ich bin auf einer Android-Anwendung arbeiten, die Dateien in mehr parallelen Segmenten herunterladen. Ich habe sie getrennt, und jetzt möchte ich sie alle zusammen verbinden.Android: Joining mehren Dateien zusammen, um eine einzelne Datei machen

Um mehr klar zu sein, ich Sie es durch ein einfaches Beispiel zeigt. Sagen wir, ich habe 100kb Datei in 4 Segmenten heruntergeladen. 1. Segment von 0kb zu 25kb ist, 2. von 25kb zu 50kb ist, 3. ist von 50kb - 75kb und das letzte Segment ist von 75kb-100kb. Dateityp kann MP3, AVI und usw.

Jetzt muss ich sie verbinden, so dass diese Segmente (Dateiteilen) eine einzelne Datei werden. Ich hoffe du könntest mir dabei helfen. Vielen Dank für Ihre Zeit!

Edit: für ein Beispiel seiner eher wie segmentiert avi (xxx.avi.001, xxx.avi.002, xxx.avi.003) Dateien, die wir manchmal in unseren PC herunterladen und die Dateien mit HJSplit in eine Datei beitreten .

+0

Ist es eine Klartextdatei (oder etwas ähnliches)? – matt5784

+1

kann alles sein! meist mp3 files – don

+0

@ user1122359 hat keine lösung? –

Antwort

3

Versuch auf diese Weise lesen aus separaten Datei einzeln und in eine Datei schreiben. unter einfachen Code für Ihr Verständnis. probier das aus, ich hoffe, es wird für dich funktionieren. können Sie diesen Code verbessern.

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

Versuchen RandomAccessFile. Es hat leistungsfähige und flexible Funktionen, so dass Sie die Datei an der genauen Byte-Position lesen oder schreiben können.