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