1

ストリーミングコンテンツをバッファリングするファイルを使用して表示しています(RAMに保持するのに十分な大きさである可能性があるため)。2つのスレッドがあります。1つはサーバーからファイルをダウンロードしてローカルストレージに書き込み、もう1つはそのファイルを読み取ってコンテンツを表示します。

問題は、2番目のスレッドがファイルの終わりに達すると、メソッドEOFExceptionからスローされることです。DataInputStream.readFully()例外をスローする代わりに、最初のスレッドが十分なデータを書き込んでいる間、待機させる方法はありますか?

4

3 に答える 3

1

Synchronize the threads. There's one possible approach.

于 2012-11-21T19:29:28.517 に答える
0

InputStreamのavailable()メソッドを使用して使用可能なバイト数を取得してから、DataInputStreamのread(byte [] b)を使用して、availableによって返されたバイト数の長さのbyte []を使用してみましたか?私は実際にこれを試していませんが、うまくいくようです。

于 2012-11-21T19:32:04.417 に答える
0

ファイルから読み取る前に、EOF を確認してください。またはtry ... catch(EOFException ex)、読み取りステートメントを囲みます。

于 2012-11-21T19:20:33.197 に答える