這篇文章帶給大家的內容是關於Java中FileInputStream是什麼? FileInputStream原始碼解析,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
FileInputStream是從文件系統中的文件中獲取字節,至於什麼文件,取決於主機環境,FileInputStream用於讀取原始字節流,如圖像數據,假如想要讀取字符類型流,請使用FileReader。
FileInputStream是繼承於InputStream,首先FileInputStream有三個建構子;分別是
FileInputStream(File file) // 建構子1:建立「File物件」對應的「檔案輸入流」
FileInputStream(FileDescriptor fd) // 建構子2:建立「檔案描述子」對應的「檔案輸入流」
FileInputStream(String path) // 建構子3:建立「檔案(路徑為path)」對應的「檔案輸入流」
用法:
總結:透過這三種建構子可以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()
程式碼實作中很簡單,一個try呼叫本地native的read0()方法,直接從文件輸入流中讀取一個位元組
測試read(byte b[])
程式碼實作也是比較簡單的,也是try中呼叫本地native的readBytes()方法,直接從檔案輸入流中讀取最多b.length個位元組到byte數組b中
測試read(byte b[], int off, int len)
程式碼實作和int read(byte b[])方法一樣,直接從檔案輸入流讀取最多len個位元組到byte陣列b中。
int available() // 傳回「剩餘的可讀取的位元組數」或「skip的位元組數」 一個本地的方法
根據這個方法,可以有效的建立byte[]陣列實例,實現最大化利用記憶體空間,在Java的世界裡,一個中文佔3個位元組,一個中文標題符號,同樣也是佔有3個位元組。
long skip(long byteCount) // 跳過byteCount個位元組本地方法
void close()// 關閉「檔案輸入流」
#以上是Java中FileInputStream是什麼? FileInputStream原始碼解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!