1. 程式人生 > >Java Web之I/O學習篇

Java Web之I/O學習篇

    Java的I/O介面在包java.io下,主要包括以下幾組,前兩組主要是傳輸資料的資料格式,後兩組主要是傳輸資料的方式。:

  1. 基於位元組操作的I/O介面:InputStream和OutputStream。
  2. 基於字元操作的I/O介面:Writer和Reader。
  3. 基於磁碟操作的I/O介面:File。
  4. 基於網路操作的I/O介面:Socket。

    無論是網路還是磁碟,最小的儲存單元是位元組,而不是字元。所以I/O操作的都是位元組。出現字元操作只是方便我們平時的操作,因為平時的資料都是以字元的形式出現的。從字元到位元組必須經過編碼的轉換。

 

磁碟I/O工作機制:

  1. 標準訪問檔案的方式:程式呼叫read()介面,作業系統檢查記憶體中是否已經快取資料,如果快取了就直接返回,沒有,則從磁碟中讀取,然後寫入快取檔案中。呼叫write()介面,則把資料從使用者空間地址複製到記憶體地址的快取中。這樣對於程式來說已經完成了,什麼時候再寫入到磁碟中由作業系統決定。也可以顯式的呼叫sync同步命令。
  2. 直接I/O的方式:程式直接訪問磁碟資料,不經過作業系統核心資料緩衝區。
  3. 同步訪問檔案的方式。
  4. 非同步訪問檔案的方式。
  5. 記憶體對映的方式。