我正在查看有关Java IO的一些文档,只想确保我理解得正确:
非缓冲输入流: FileInputStream, InputStreamReader, FileReader
非缓冲输出流: FileOutputStream, OutputStreamWriter, FileWriter
缓冲输出流: PrintStream, PrintWriter
此外,我们还有BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter流,用于将非缓冲流转换为缓冲版本。
最后,我观察到对于字符流,即InputStreamReader、FileReader、OutputStreamWriter和FileWriter,会在发送到流之前维护一个内部字节缓冲区。该字节缓冲区不受我们控制。因此,对于字符流,缓冲指的是高级字符缓冲区,用于存储进出程序的字符。
我所说的一切都正确吗?
P.S. - 我知道这个缓冲问题在某种程度上取决于具体实现,但我只是希望确认Javadocs所说的内容。
ObjectOutputStream
,它既有缓冲也没有,具体取决于它正在做什么。你还省略了过滤流和读取器(Filter streams and readers)。 - user207421OutputStreamWriter
正在缓冲的内容并不清楚。 - Dave L.ObjectOutputStream
在发送原始数据时是带缓冲的,但在发送对象时会刷新缓冲区。ObjectInputStream
是带缓冲的。我相信 所有 的Reader
和Writer
类都是带缓冲的。 - user207421