我在Java中搜索了一些东西来读取文件。我找到了FileInputStream
和DataInputStream
,但我想了解此流的内部工作情况。有人可以清楚地向我解释它们是如何工作的吗?
答案 0 :(得分:1)
每个系统(Linux,Mac,Windows,甚至是不同版本的系统)的工作方式都有所不同。这就是它的优点。你不需要知道,你只知道它已被处理。你可以在每个系统上使用它。
如果您真的想知道它是如何工作的,那么您必须查看您正在使用的系统的jvm实现的源代码。
从FileInputStream源:
private native void open(String name) throws FileNotFoundException;
public native int read() throws IOException;
private native int readBytes(byte b[], int off, int len) throws IOException;
这表明每个系统的写入都不同。但是当你想使用它时,无论你使用什么系统,你都可以使用相同的代码。
答案 1 :(得分:0)
要获得两者之间差异的明确答案(至少从严格的Java角度来看),请查看Java API(http://www.oracle.com/technetwork/java/api-141528) .html)您正在使用的Java版本的规范。对于JavaSE 1.6,请查看FileInputStream和DataInputStream。
据我了解,DataInputStream对于使用程序中可访问的输入数据流很有用;而FileInputStream用于访问程序外部的文件(例如,在文件系统上)。
答案 2 :(得分:0)
FileInputStream
是一个将文件作为字节流读取的类。
DataInputStream
是一个读取另一个流并为标准类型应用转换的类(即,不是读取字节,而是可以告诉它读取4字节{{1} })。
它们有两个完全不同的用途。