Java Web之I/O學習篇
阿新 • • 發佈:2019-08-28
Java的I/O介面在包java.io下,主要包括以下幾組,前兩組主要是傳輸資料的資料格式,後兩組主要是傳輸資料的方式。:
- 基於位元組操作的I/O介面:InputStream和OutputStream。
- 基於字元操作的I/O介面:Writer和Reader。
- 基於磁碟操作的I/O介面:File。
- 基於網路操作的I/O介面:Socket。
無論是網路還是磁碟,最小的儲存單元是位元組,而不是字元。所以I/O操作的都是位元組。出現字元操作只是方便我們平時的操作,因為平時的資料都是以字元的形式出現的。從字元到位元組必須經過編碼的轉換。
磁碟I/O工作機制:
- 標準訪問檔案的方式:程式呼叫read()介面,作業系統檢查記憶體中是否已經快取資料,如果快取了就直接返回,沒有,則從磁碟中讀取,然後寫入快取檔案中。呼叫write()介面,則把資料從使用者空間地址複製到記憶體地址的快取中。這樣對於程式來說已經完成了,什麼時候再寫入到磁碟中由作業系統決定。也可以顯式的呼叫sync同步命令。
- 直接I/O的方式:程式直接訪問磁碟資料,不經過作業系統核心資料緩衝區。
- 同步訪問檔案的方式。
- 非同步訪問檔案的方式。
- 記憶體對映的方式。