5

ファイルを1つずつ読みたい。ファイルはいくつかの部分に分割され、さまざまな種類のメディアに保存されます。私が現在行っているのは、ファイルの各部分を呼び出してから、元のファイルにマージして戻すことです。

問題は、ファイルを再生/開く前に、すべてのチャンクが到着するまで待つ必要があることです。すべてが到着するのを待つのではなく、到着するときにチャンクを読み取ることは可能ですか?

メディアファイル(映画ファイル)を制作しています。

4

3 に答える 3

13

一度にバイトを読み取るには、 InputSteram.read(byte [])を参照してください。

コード例:

try {
    File file = new File("myFile");
    FileInputStream is = new FileInputStream(file);
    byte[] chunk = new byte[1024];
    int chunkLen = 0;
    while ((chunkLen = is.read(chunk)) != -1) {
        // your code..
    }
} catch (FileNotFoundException fnfE) {
    // file not found, handle case
} catch (IOException ioE) {
    // problem reading, handle case
}
于 2012-06-19T22:05:05.097 に答える
2

あなたが欲しいのはsource data lineです。これは、データが大きすぎて一度にメモリに保持できない場合に最適なので、ファイル全体を受信する前に再生を開始できます。または、ファイルが終了しない場合。

ここでソースデータ行のチュートリアルを見てください

http://docs.oracle.com/javase/6/docs/api/java/io/FileInputStream.html#read

この FileInputSteam を使用します

于 2012-06-19T22:10:42.353 に答える