8

FileWriter がバッファリングされているかどうかを知りたいです。

このSOの質問ではそうですが、このSOの質問でそうではないようです( write(..) が呼び出されるたびにシステムコールになります。

したがって、基本的にこれら 2 つの Q&A を読むと、少し混乱します。誰かがそれを明確に説明できますか?

前もって感謝します。

編集:関連する部分を引用しているこのAPIを読むことで問題が解決しました:

write() メソッドを呼び出すたびに、エンコーディング コンバーターが指定された文字に対して呼び出されます。結果のバイトは、基になる出力ストリームに書き込まれる前にバッファーに蓄積されます。このバッファのサイズは指定できますが、デフォルトではほとんどの目的に十分な大きさです。write() メソッドに渡された文字はバッファリングされないことに注意してください。

最高の効率を得るには、OutputStreamWriter を BufferedWriter 内にラップして、頻繁なコンバーターの呼び出しを回避することを検討してください。例えば:

Writer out = new BufferedWriter(new OutputStreamWriter(System.out));

FileWriter は OutputStreamWriter を継承しているため、これにも適用されます。

お時間をいただきありがとうございます。かなり具体的な質問をしたことは承知しています。

4

2 に答える 2

-1

FileWriterはバッファリングされていないためBufferedWriter、ラッパーとして aを使用する必要があります。

final int myBufferSize = 2048;

Writer myWriter = new BufferedWriter(new FileWriter, myBufferSize);
于 2013-07-27T15:48:40.737 に答える