Java中`InputStream`、`DataInputStream`和`BufferedInputStream`的区别是什么?

26
在 Java 中,InputStreamDataInputStreamBufferedInputStream 有何区别?

1
你的意思是什么区别? - Snicolas
3
阅读API文档 - Jesper
2个回答

26

如果问题是:“这些类之间的区别是什么”,以下是一个简要总结,但请阅读javadoc以获取更多信息:

InputStream是从流(网络或文件)中读取字节的基类。它提供了从流中读取字节并检测流结束的能力。

DataInputStream是一种InputStream,可直接读取原始数据类型的数据。

BufferedInputStream是一种InputStream,它从流中读取数据并使用缓冲区来优化对数据的速度访问。实际上,数据是预先读取的,这减少了磁盘或网络访问。


DataInputStream不处理对象。我想你把它和ObjectInputStream混淆了。 - Stephen C

8

我认为你是在询问差异,我会提供一些详细信息。

输入流 (Input Stream) 意味着:这个抽象类是所有表示字节输入流的类的超类。需要定义 InputStream 子类的应用程序必须始终提供一个返回输入的下一个字节的方法。

DataInputStream:数据输入流以机器无关的方式使应用程序从基础输入流中读取基本的 Java 数据类型。应用程序使用数据输出流来写入数据,稍后可以由数据输入流读取。

更多信息请使用此链接http://docs.oracle.com/javase/6/docs/api/java/io/DataInputStream.html

BufferedInputStream: 缓冲输入流添加了另一个输入流的功能,即缓冲输入并支持标记和重置方法。当创建 BufferedInputStream 时,会创建一个内部缓冲区数组。随着从流中读取或跳过的字节数量的增加,内部缓冲区会根据需要从包含的输入流中重新填充,每次很多字节。


3
你复制粘贴了文档的开头段落,本可以只提供链接。 - CuriousSid
7
我已经提供了链接。但有时链接会过期或者出现404错误。 - Raki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接