2012-07-06 12 views
6

Pracuję nad aplikacją na Androida, która może pobierać pliki w kilku równoległych segmentach. Mam je oddzielnie, a teraz chcę dołączyć do nich wszystkich razem.Android: Łączenie wielu plików razem w jeden plik

Aby być bardziej zrozumiałym, pokażę ci to na prostym przykładzie. Powiedzmy, że pobrałem plik 100kb w 4 segmentach. Pierwszy segment to od 0kb do 25kb, drugi to od 25kb do 50kb, trzeci to od 50kb - 75kb, a ostatni segment to od 75kb-100kb. Typem pliku może być mp3, avi i inne.

Teraz muszę do nich dołączyć, aby te segmenty (części plików) stały się pojedynczym plikiem. Mam nadzieję, że możesz mi w tym pomóc. Dziękuję za Twój czas!

Edycja: dla przykładu jest bardziej podobna do podzielonych na segmenty plików avi (xxx.avi.001, xxx.avi.002, xxx.avi.003), które czasami pobieramy na nasz komputer i dołączamy pliki przy użyciu HJSplit do jednego pliku .

+0

Czy jest to plik w postaci zwykłego tekstu (lub coś podobnego)? – matt5784

+1

to może być cokolwiek! głównie pliki mp3 – don

+0

@ user1122359 ma jakieś rozwiązanie? –

Odpowiedz

3

Spróbuj w ten sposób, przeczytaj z osobnego pliku jeden po drugim i napisz do jednego pliku. pod prostym kodem dla Twojego zrozumienia. spróbuj tego, mam nadzieję, że to zadziała. możesz poprawić ten kod.

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

Spróbuj RandomAccessFile. Ma potężne i elastyczne funkcje, dzięki którym można czytać lub zapisywać pliki z dokładną pozycją bajtu.

Powiązane problemy