2012-07-06 17 views
6

Tôi đang làm việc trên một ứng dụng Android có thể tải xuống các tệp trong một số phân đoạn song song. Tôi có chúng một cách riêng biệt, và bây giờ tôi muốn tham gia cùng nhau.Android: Ghép các tệp nhiều phần lại với nhau để tạo một tệp đơn

Để rõ ràng hơn, tôi sẽ cho bạn thấy nó bằng một ví dụ đơn giản. Giả sử tôi đã tải xuống tệp 100kb trong 4 phân đoạn. Đoạn 1 là từ 0kb đến 25kb, thứ 2 là từ 25kb đến 50kb, thứ 3 là từ 50kb - 75kb và đoạn cuối là từ 75kb-100kb. Filetype có thể là mp3, avi và vv

Bây giờ tôi cần tham gia chúng để các phân đoạn đó (các phần tệp) trở thành một tệp duy nhất. Tôi hy vọng bạn có thể giúp tôi với điều này. Cảm ơn vì đã dành thời gian cho tôi!

Chỉnh sửa: ví dụ về các tệp avi (xxx.avi.001, xxx.avi.002, xxx.avi.003) được phân đoạn mà đôi khi chúng tôi tải xuống PC của chúng tôi và tham gia các tệp bằng cách sử dụng HJSplit vào một tệp .

+0

Đây có phải là tệp văn bản thuần túy (hoặc một cái gì đó tương tự) không? – matt5784

+1

nó có thể là bất cứ điều gì! hầu hết các tệp mp3 – don

+0

@ user1122359 có giải pháp nào không? –

Trả lời

3

Hãy thử theo cách này, đọc từ từng tệp riêng lẻ và ghi vào một tệp. bên dưới mã đơn giản để bạn hiểu. hãy thử điều này, tôi hy vọng nó sẽ làm việc cho bạn. bạn có thể cải thiện mã này.

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

Hãy thử RandomAccessFile. Nó có các chức năng mạnh mẽ và linh hoạt để bạn có thể đọc hoặc ghi tệp tại vị trí byte chính xác.

Các vấn đề liên quan