2011-04-17 71 views
0

我在Java中搜索了一些东西来读取文件。我发现FileInputStreamDataInputStream,但我想知道这个流的内部工作。有人能够清楚地解释我们的工作方式吗?FileInputStream的内部工作

+1

您可以随时在Java源代码中阅读它们的实现,至少在您调用本地方法调用之前。 – 2011-04-17 22:41:30

+2

你到底想知道他们是如何工作的? – squawknull 2011-04-17 22:42:06

回答

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; 

这表明它是写为每个系统不同。但是,当你想使用它时,无论你使用什么系统,都可以使用相同的代码。

0

要获得关于两者之间差异的明确答案(至少从严格的Java观点来看),请查看Java API(http://www.oracle.com/technetwork/java/api- 141528.html)规范了您正在使用的Java版本。在JavaSE 1.6的情况下,请查看FileInputStreamDataInputStream

据我所知,DataInputStream对于使用输入的数据流是很有用的,而FileInputStream用于访问程序外部的文件(例如在文件系统上)。

0

FileInputStream是一个以字节流的形式读取文件的类。

DataInputStream是一个类,读取另一个流并应用转换为标准的类型(即,而不是读取字节,你可以告诉它读取4个字节的int)。

他们服务两个完全不同的目的。

+0

以及我正在尝试阅读文件,然后我搜索了两种方法来做到这一点: - FileInputStream fis = new FileInputStream(“C:/Users/pranay/Desktop/pranay.txt”); \t \t DataInputStream dis = new DataInputStream(fis); \t \t BufferedReader br = new BufferedReader(new InputStreamReader(dis)); \t \t或 \t \t BufferedReader br = new BufferedReader(new FileReader(“C:/Users/pranay/Desktop/pranay.txt”)); – 2011-04-18 00:31:49