2011-04-17 80 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