IO是當今Web面臨的主要問題之一,能夠說,大部分web應用的瓶頸都是IO的瓶頸。java
Java的IO類是java.io.它包含有80多個類,分爲4大部分:web
無論是網絡傳輸仍是磁盤,最小的存儲單元都是字節,而不是字符,那爲何還有字符的處理呢?這是由於咱們程序中操做的單位通常都是字符,而不是字節,而將字符轉換爲字節又是須要時間的,而且編解碼的問題常常容易引發亂碼。數組
InputStreamReader是將字節到字符進行轉換的橋樑。另外,須要注意的是要指定轉換的字符集,不然很是容易引發亂碼的問題。而StreamDecoder是完成字節到字符解碼的類,緩存
這是一個讀取文件的實現方式,FileReader繼承了InputStreamer,將一個文件流讀入字符集buf中,經過StreamDecoder完成字節的解碼操做。網絡
(1)標準訪問方式:異步
(讀操做 》)spa
磁盤 -- 緩存 -- 內核空間線程
(《 寫操做)code
(2)直接IO操做對象
(3)同步訪問
顧名思義,文件的讀寫操做是同步的,必須等到文件讀寫成功後纔會返回標誌,通常用於特別重要的數據的讀寫
(4)異步訪問
和同步訪問相反,當讀寫線程發出請求以後,會接着去處理其餘的事情,而不會阻塞。這種訪問方式會提升應用程序的了效率,但不會改變文件的讀寫效率
(5)內存映射
Java中一般的File 並不表明一個真實存在的文件對象,當你制定一個描述符的時候,他就會返回一個表明這個路徑的虛擬對象,它多是一個真實存在的對象,也多是一個包含多個文件的目錄。只有在讀寫文件的時候,咱們纔會檢查是否存在這個文件 。
序列化
Java序列化是將一個Java對象轉換爲一串二進制字符數組,經過轉移或保存字節數組達到持久化的目的。
未完 ......
關鍵字: 序列化
參考: 《深刻分析Java 技術內幕》