我对input stream
和output stream
感到困惑。我们何时需要使用Buffered output
和input Streams
。与Buffered Reader
和Buffered Writer
相同?
答案 0 :(得分:1)
使用缓冲区和原因: 使用out缓冲区I / O意味着每个读取或写入请求由底层OS直接处理。这可能会使程序的效率降低,因为每个此类请求通常会触发磁盘访问,网络活动或其他相对昂贵的操作。
为了减少这种开销,Java平台实现了缓冲的I / O流。缓冲输入流从称为缓冲区的存储区读取数据;仅当缓冲区为空时才调用本机输入API。类似地,缓冲输出流将数据写入缓冲区,仅当缓冲区已满时才调用本机输出API。
程序可以使用我们现在多次使用的包装习惯用法将无缓冲的流转换为缓冲流,其中无缓冲的流对象被传递给缓冲流类的构造函数。以下是如何修改CopyCharacters示例中的构造函数调用以使用缓冲的I / O:
inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));
参考:Java Docs
答案 1 :(得分:0)
检查http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html(和其他人),了解如何使用它们以及它们的用例。您可以使用缓冲包装类来使用它们的方法(在更高的抽象级别上),如BufferedReader.readLine()
,而不是处理Streams的字节处理,并让语言处理潜在的问题。
答案 2 :(得分:0)
输入流=从文件中读取字节
输出流=将字节写入文件
缓冲读卡器=使用缓冲区
从文件中读取字符缓冲写入器=使用缓冲区
将字符写入文件缓冲输入流=使用缓冲区从文件读取字节
缓冲输出流=使用缓冲区
将字节写入文件总是更喜欢缓冲流或读写器,因为它们在写入或读取之前使用缓冲区内存而不是实际的物理内存。它们更有效,更快捷。
流和读写器分别只有读/写,字节或字符的差别。