数据输入/输出流和缓冲输入/输出流有啥区别?

Posted

技术标签:

【中文标题】数据输入/输出流和缓冲输入/输出流有啥区别?【英文标题】:What is the difference between DataInput/OutputStream and BufferedInput/ouputStream?数据输入/输出流和缓冲输入/输出流有什么区别? 【发布时间】:2014-09-14 16:35:12 【问题描述】:

让我在这篇文章的开头谨慎一点。我是一个完全的初学者,我真的很想学习和理解做这些事情的最佳方法。除了我的首要问题,在什么情况下我可以使用DataInput/OutputStreamBufferedInput/ouputStream?谢谢

【问题讨论】:

重复:***.com/questions/1830698/… 另见:***.com/a/9805247/2206044 ***.com/a/8921601/2194456 和 way2java.com/io/bufferedinputstream-and-bufferedoutputstream 【参考方案1】:

DataInputStream 处理二进制数据,而 BufferedReader 处理字符数据。

所有的原始数据类型都可以通过DataInputStream类中的相应方法来处理,而BufferedReader类只能读取字符串数据,需要将它们解析成各自的原始数据。

DataInputStream 是过滤流的一部分,而 BufferedReader 不是。

DataInputStream 是二进制流,消耗的内存空间较少,而 BufferedReader 是字符流,消耗的内存空间更多。

要处理的数据在DataInputStream中是有限的,而在BufferedReader中要处理的字符数范围很广。

【讨论】:

感谢您富有洞察力的回答。我想我现在开始明白了。【参考方案2】:

DataInput/OutputStream 用于将原始数据(int、boolean 等)等数据读/写到文件中。

BufferedInput/ouputStream 是提高性能的包装器。

事实上,你可以像这样使用它们:

DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(file));

这背后的整个设计就是装饰者模式。您可以使用多个其他装饰器,例如 ObjectOutputStream 作为包装器。

【讨论】:

也感谢您对您的深刻回答。

以上是关于数据输入/输出流和缓冲输入/输出流有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Java IO流中先关闭输出流还是先关闭输入流?为啥?

java中IO流有哪些?

字符流和字节流的区别

Java的输入输出流

java 20 - 9 带有缓冲区的字节输出流和字节输入流

Linux c学习--从标准输入输出看流和缓冲区