接下來介紹 FileInputStream 和 FileOutputStream現在看名字應該可以看得出來: 他就是從一個文件中讀取數據 或者將數據寫入到一個文件中 FileInputStream 既然是從文件讀取數據,那麼自然要記錄文件本身的信息所以有文件... ...
接下來介紹 FileInputStream 和 FileOutputStream 現在看名字應該可以看得出來:
他就是從一個文件中讀取數據 |
或者將數據寫入到一個文件中 |
FileInputStream
既然是從文件讀取數據,那麼自然要記錄文件本身的信息 所以有文件描述符 fd以及 path路徑名 顯然,文件描述符是對文件最直接的描述 如果是使用文件描述符作為參數的話,path的值將會是null |
nio的東西,暫時不說了 |
構造方法
read方法
read方法讀取一個位元組 帶數組參數的read方法將數據讀取到位元組數組中,並且返回實際讀取的個數 跟InputStream是一樣的 看得出來,如同我們之前說過的那樣,文件的讀寫操作依賴於操作系統,所以 所有的read都歇菜了,最終依賴的都是本地方法 還有一個需要時刻記住的是,read 阻塞選手 |
skip(long n) available()
連讀的能力都沒有,需要藉助本地方法 自然是沒有能力跳過和獲取可用個數的 所以仍舊是依賴的本地方法 |
|
Close方法
getFD() getChannel()
getFD() getChannel() 就是返回他們的值 如果fd不存在,拋出異常 從構造方法可以看得出來, 必然會有一個fd getChannel nio的後續再說,沒有就創建一個 |
FileOutputStream
write方法
getFD() getChannel() close() 和 FileInputStream中的一模一樣 代碼都是一樣的,不再贅述
再一次的介紹了一對成員,你會發現越往後看越簡單,因為他們的套路大多數是一樣的 所以只需要自頂而下的瞭解清楚各個邏輯組成部分的含義功能 整個IO體系會越來越容易理解