0

このケースは少し複雑です、私はそれをうまく単純化することを望みます。

私のタスクは、PrintStreamデータを出力することになっている場所を受け取ったときに始まります。ただし、タスク全体は計算+印刷であり、計算が完了したら印刷できます。したがって、これは2パスのタスクになる可能性がありますが、1パスを希望します。

これを実現するために、出力バッファーを作成し、計算と印刷(バッファーへの)を行ってから、バッファーから実際の出力ストリームに出力したいと思います。

これまでのところ、問題は、バッファリングに適切なクラスが見つからないことですBufferedOutputStream。正しく理解していれば、バッファがいっぱいになるとバッファから書き込みを開始します。私はそれをもっと厳密に制御する必要があります-正確に言うまで実際の出力に書き込まないでください。

質問-このタスクに適したクラスはありますか?

4

2 に答える 2

2

ByteArrayOutputStreamをバッファーとして使用できます。このストリームが書き込むバイト配列は、書き込んだすべてのものを保持するために自動的に拡大されます。

出力の生成が完了したら、writeToメソッドを呼び出して、実際のデバイスに書き込む出力ストリームにバッファの内容を書き込みます。

詳細については、http://docs.oracle.com/javase/6/docs/api/java/io/ByteArrayOutputStream.htmlを参照してください。

于 2012-06-14T19:55:56.940 に答える
0

フラッシュメソッドのjavadocから:

このバッファリングされた出力ストリームをフラッシュします。これにより、バッファリングされた出力バイトが基になる出力ストリームに強制的に書き出されます。

于 2012-06-14T19:56:03.727 に答える