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