ファイルを1つずつ読みたい。ファイルはいくつかの部分に分割され、さまざまな種類のメディアに保存されます。私が現在行っているのは、ファイルの各部分を呼び出してから、元のファイルにマージして戻すことです。
問題は、ファイルを再生/開く前に、すべてのチャンクが到着するまで待つ必要があることです。すべてが到着するのを待つのではなく、到着するときにチャンクを読み取ることは可能ですか?
メディアファイル(映画ファイル)を制作しています。
ファイルを1つずつ読みたい。ファイルはいくつかの部分に分割され、さまざまな種類のメディアに保存されます。私が現在行っているのは、ファイルの各部分を呼び出してから、元のファイルにマージして戻すことです。
問題は、ファイルを再生/開く前に、すべてのチャンクが到着するまで待つ必要があることです。すべてが到着するのを待つのではなく、到着するときにチャンクを読み取ることは可能ですか?
メディアファイル(映画ファイル)を制作しています。
一度にバイトを読み取るには、 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
}
あなたが欲しいのはsource data lineです。これは、データが大きすぎて一度にメモリに保持できない場合に最適なので、ファイル全体を受信する前に再生を開始できます。または、ファイルが終了しない場合。
ここでソースデータ行のチュートリアルを見てください
http://docs.oracle.com/javase/6/docs/api/java/io/FileInputStream.html#read
この FileInputSteam を使用します