2012-07-06 17 views
6

私はいくつかの並列セグメントでファイルをダウンロードできるアンドロイドアプリケーションで作業しています。私はそれらを別々に持っています、そして、今私は一緒にそれらに参加したいです。Android:複数のファイルをまとめて1つのファイルにする

もっと明確にするために、簡単な例で説明します。私は4つのセグメントで100kbファイルをダウンロードしたと言うことができます。最初のセグメントは0kbから25kbまで、2番目は25kbから50kbまで、3番目は50kbから75kbまで、最後のセグメントは75kbから100kbまでです。ファイルタイプはmp3、aviなどとなります。

これらのセグメント(ファイル部分)が1つのファイルになるように、それらを結合する必要があります。あなたが私にこれを手伝ってくれることを願っています御時間ありがとうございます!

編集:私たちが時々私たちのPCにダウンロードし、HJSplitを使ってファイルを1つのファイルに結合する、よりセグメント化されたavi(xxx.avi.001、xxx.avi.002、xxx.avi.003) 。

+0

平文ファイル(または類似のファイル)ですか? – matt5784

+1

それは何でもかまいません!ほとんどmp3ファイル – don

+0

@ user1122359どのような解決策がありますか? –

答えて

3

このようにして、別のファイルから1つずつ読み込んで1つのファイルに書き込んでください。ご理解の上、下記の の簡単なコードをご覧ください。これを試して、私はあなたのために動作することを願っています。 このコードを改善することができます。

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

RandomAccessFileを試してみてください。強力で柔軟な機能を備えているため、ファイルを正確なバイト位置で読み書きすることができます。

関連する問題