Java FileInputStream的内部工作

Java FileInputStream的内部工作,java,file-io,Java,File Io,我用Java搜索了一些东西来读取文件。我找到了FileInputStream和DataInputStream,但我想知道这个流的内部工作原理。有人能给我解释清楚它们是如何工作的吗?每个系统(Linux、Mac、Windows,甚至不同版本的系统)的工作原理是不同的。这就是它的伟大之处。你不需要知道,你只需要知道它已经处理好了。您可以在每个系统上使用相同的方法 如果您真的想知道它是如何工作的,那么您必须查看正在工作的系统的jvm实现的源代码 从FileInputStream源: private n

我用Java搜索了一些东西来读取文件。我找到了
FileInputStream
DataInputStream
,但我想知道这个流的内部工作原理。有人能给我解释清楚它们是如何工作的吗?

每个系统(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;

这表示每个系统的写入方式不同。但是,当您想使用它时,无论您使用的是什么系统,都可以使用相同的代码。

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


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

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

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


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

您始终可以在Java源代码中阅读它们的实现,至少在您调用本机方法之前是这样。到底是什么,你们想知道它们是如何工作的吗?我试着阅读这个文件,然后我搜索了下面给出的两种方法:-FileInputStream fis=newfileinputstream(“C:/Users/pranay/Desktop/pranay.txt”);DataInputStream dis=新的DataInputStream(fis);BufferedReader br=新的BufferedReader(新的InputStreamReader(dis));或BufferedReader br=新的BufferedReader(新文件阅读器(“C:/Users/pranay/Desktop/pranay.txt”);