Java 什么时候应该使用BufferedInputStream、FileInputStream或DataInputStream?

Java 什么时候应该使用BufferedInputStream、FileInputStream或DataInputStream?,java,io,Java,Io,我对上面提到的课程感到困惑。什么时候用什么?从我的角度来看,所有的东西都是以java中的流的形式出现的,对吗?那么,在什么情况下使用哪种方法来提高输入的效率呢?另外,请回答我是否可以使用DataInputStream或BufferedInputStream从文件中读取内容 文件输入流 用于从文件中读取 见: FileInputStream从文件系统中的文件获取输入字节。哪些文件可用取决于主机环境。[……] 数据输入流 用于读取基本Java类型(您可能使用DataOutputStream)并为此提

我对上面提到的课程感到困惑。什么时候用什么?从我的角度来看,所有的东西都是以java中的流的形式出现的,对吗?那么,在什么情况下使用哪种方法来提高输入的效率呢?另外,请回答我是否可以使用DataInputStream或BufferedInputStream从文件中读取内容

文件输入流 用于从文件中读取

见:

FileInputStream从文件系统中的文件获取输入字节。哪些文件可用取决于主机环境。[……]

数据输入流 用于读取基本Java类型(您可能使用
DataOutputStream
)并为此提供方便的方法,例如
writeInt()

见:

数据输入流允许应用程序读取原始Java数据类型 以独立于机器的方式从底层输入流。[……]

缓冲输入流 用于从
InputStream
(而不是单个字节)执行缓冲块读取,并在读取小块数据时提高性能。大多数情况下,您希望将其用于文本处理

见:

BufferedInputStream为另一个输入流添加了功能,即缓冲输入[…]的能力


当然,您可以将它们组合在一起,因为它们遵循以下规则


将基本Java类型写入文件的示例:

FileOutputStream write = new FileOutputStream 
DataOutputStream out = new DataOutputStream(write);
out.writeInt(10);
write.close();

事实上,我遇到了这个问题,但我的查询是不同的..因为我问过哪一个更适合哪种情况,我也问过是否可以在读取文件内容时使用DataInputStream。标记是相同的,而questionStreams使用decorator模式,所以大多数流都可以构建在另一个流的基础上,虽然其他对象可以是可以构建在其他对象(如FileInputStream、SocketInputStream…)上的基本流,请参阅:是的,但是如果您阅读了答案,它应该回答您的问题
DataInputStream is=newdatainputstream(newbufferedinputstream(newfileinputstream(“filename.dat”))
它们都很不同。
BufferedInputStream
不能替代
DataInputStream
。正如我提到的,如果你愿意,你可以把它们结合起来,但是它们的目的完全不同。一个用于方便地编写基本数据,另一个用于提高性能。你说得对,我删除了这行。非常感谢。原始数据表示整型、浮点型、字符型等??正确。请参见此处:您将无法单独使用它,因为您必须向构造函数提供另一个inputstream。
DataInputStream
只是一个有用的类,用于处理其他
InputStream
并以方便的方式从中读取数据。但是您必须将一些源流传递给
DataInputStream