FileInputStream的内部工作

时间:2011-04-17 22:37:17

标签: java file-io

我在Java中搜索了一些东西来读取文件。我找到了FileInputStreamDataInputStream,但我想了解此流的内部工作情况。有人可以清楚地向我解释它们是如何工作的吗?

3 个答案:

答案 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,请查看FileInputStreamDataInputStream

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

答案 2 :(得分:0)

FileInputStream是一个将文件作为字节流读取的类。

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

它们有两个完全不同的用途。