首頁  >  文章  >  Java  >  Java中FileInputStream是什麼? FileInputStream原始碼解析

Java中FileInputStream是什麼? FileInputStream原始碼解析

不言
不言轉載
2018-10-27 13:50:402580瀏覽

這篇文章帶給大家的內容是關於Java中FileInputStream是什麼? FileInputStream原始碼解析,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

FileInputStream是從文件系統中的文件中獲取字節,至於什麼文件,取決於主機環境,FileInputStream用於讀取原始字節流,如圖像數據,假如想要讀取字符類型流,請使用FileReader。

FileInputStream是繼承於InputStream,首先FileInputStream有三個建構子;分別是

FileInputStream(File file)         // 建構子1:建立「File物件」對應的「檔案輸入流」
FileInputStream(FileDescriptor fd) // 建構子2:建立「檔案描述子」對應的「檔案輸入流」
FileInputStream(String path)       // 建構子3:建立「檔案(路徑為path)」對應的「檔案輸入流」

用法:

Java中FileInputStream是什麼? FileInputStream原始碼解析

Java中FileInputStream是什麼? FileInputStream原始碼解析

Java中FileInputStream是什麼? FileInputStream原始碼解析

總結:透過這三種建構子可以FileInputStream(FileDescriptor fd)是和透過建構子1和建構子3得到的實例是同一個實例

public int read() //從此輸入流讀取一個資料位元組
public int read(byte b[]) //從此輸入流讀取多個位元組到byte數組中
public int read(byte b[], int off, int len) //從此輸入流讀取最多len個位元組到byte數組中

測試read()

Java中FileInputStream是什麼? FileInputStream原始碼解析

Java中FileInputStream是什麼? FileInputStream原始碼解析

程式碼實作中很簡單,一個try呼叫本地native的read0()方法,直接從文件輸入流中讀取一個位元組

測試read(byte b[])

Java中FileInputStream是什麼? FileInputStream原始碼解析

Java中FileInputStream是什麼? FileInputStream原始碼解析

程式碼實作也是比較簡單的,也是try中呼叫本地native的readBytes()方法,直接從檔案輸入流中讀取最多b.length個位元組到byte數組b中

測試read(byte b[], int off, int len)

Java中FileInputStream是什麼? FileInputStream原始碼解析

Java中FileInputStream是什麼? FileInputStream原始碼解析

程式碼實作和int read(byte b[])方法一樣,直接從檔案輸入流讀取最多len個位元組到byte陣列b中。

int available() // 傳回「剩餘的可讀取的位元組數」或「skip的位元組數」 一個本地的方法

Java中FileInputStream是什麼? FileInputStream原始碼解析

根據這個方法,可以有效的建立byte[]陣列實例,實現最大化利用記憶體空間,在Java的世界裡,一個中文佔3個位元組,一個中文標題符號,同樣也是佔有3個位元組。

long skip(long byteCount) // 跳過byteCount個位元組本地方法

Java中FileInputStream是什麼? FileInputStream原始碼解析

Java中FileInputStream是什麼? FileInputStream原始碼解析

void close()// 關閉「檔案輸入流」

#

以上是Java中FileInputStream是什麼? FileInputStream原始碼解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除