12

私はJava IOに関するいくつかのドキュメントを調べていて、これが正しいかどうかを確認したかっただけです:

バッファリングされていない入力ストリーム: FileInputStream、InputStreamReader、FileReader

バッファリングされていない出力ストリーム: FileOutputStream、OutputStreamWriter、FileWriter

バッファリングされた出力ストリーム: PrintStream、PrintWriter

さらに、バッファリングされていないストリームをバッファリングされたバージョンに変換する BufferedInputStream、BufferedOutputStream、BufferedReader、および BufferedWriter ストリームがあります。

最後に、キャラクター ストリームについて、つまり、InputStreamReader、FileReader、OutputStreamWriter、FileWriter。バイトがストリームに送信される前に、バイト用の内部バイトバッファが維持されます。このバイトバッファは私たちの管理下にはありません。したがって、文字ストリームの場合、バッファリングとは、プログラムに出入りする文字を格納するための高レベルの文字バッファーを指します。

私が言ったことはすべて正しいですか?

PS - このバッファリングの問題は実装に多少依存することは理解していますが、javadoc の内容を確認したいだけです。

4

1 に答える 1

2

経験則:

  1. 外部ソース (FileInputStream、SocketInputStream など) から直接読み取る InputStream / Reader はすべて「生」であり、バッファリングされていないと見なされます。(実際には、おそらく何らかのバッファリングが行われていますが、実装によって異なります)

  2. 「生の」InputStream または Reader は、BufferedInputStream または BufferedReader によってバッファリングできます。

  3. OutputStreams / Writers についても同じ仮定。

  4. 他のストリーム デコレータ (つまり、GZIPInputStream、MD5InputStream、YourSpecialObjectWriter) はおそらく何らかのバッファリングを行いますが、ソースをバッファリングするのにそれほど害はありません。

于 2012-11-12T01:52:03.043 に答える