数据输入/输出流和缓冲输入/输出流有啥区别?
Posted
技术标签:
【中文标题】数据输入/输出流和缓冲输入/输出流有啥区别?【英文标题】:What is the difference between DataInput/OutputStream and BufferedInput/ouputStream?数据输入/输出流和缓冲输入/输出流有什么区别? 【发布时间】:2014-09-14 16:35:12 【问题描述】:让我在这篇文章的开头谨慎一点。我是一个完全的初学者,我真的很想学习和理解做这些事情的最佳方法。除了我的首要问题,在什么情况下我可以使用DataInput/OutputStream
和BufferedInput/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 作为包装器。
【讨论】:
也感谢您对您的深刻回答。以上是关于数据输入/输出流和缓冲输入/输出流有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章