IO學習第一天

IO技術的例子:比如我們從網上下載文件到本地就完成了一次IO的操作

將自己的頭像上傳到網站也可以理解為一次IO的操作

上傳下載就是IO的應用

IO分為跟服務器的交流和跟客戶的交流

常見的數據源有文件,數據庫,網絡,有其它電腦的內存,有鍵盤等等

數據源就是存儲數據的地方

IO是input,output的簡稱,輸入輸入流這裡的流指的是流動的是我們的數據

IO學習第一天

IO學習第一天

IO學習第一天

IO學習第一天

實際上文件不是直接存放到我們的java裡面,而是存到我們的硬盤上,而這個硬盤就需要操作系統去操作,所以我們的java程序需要跟操作系統進行交流,當我們的java讀完文件的時候,我就可以告訴操作系統你可以釋放對文件的資源了。

這裡涉及到的流的關閉不是指的在java裡面關閉流,而是java通知操作系統你可以釋放你那邊的資源了。

我們存儲對象的過程叫做序列化,把對象還原稱之為反序列化


按流向來分

IO學習第一天

按功能來分(間接操作數據源還是直接操作數據源)

IO學習第一天

IO學習第一天

字符集

GBK,UTF-8,UNICODE

在java裡面一個漢字兩個字節,存儲的是unicode編碼

假設文件是用utf-8來存的,讀的時候也只能utf-8

IO學習第一天

IO學習第一天

對於字符流來說,其底層仍為字節流操作,所以輸入流讀取文件可以看做是把文件讀取成字節,然後字節再轉換為字符,這就涉及到兩個過程,第一個過程與字節流讀取一樣,但是第二個過程new InputStreamReader(inputStream)即字節轉字符時InputStreamReader()默認是utf-8編碼,如果字節的編碼不是utf-8,那麼轉換過程就會出錯,所以這裡轉換編碼要和文件編碼一致,可以在轉換時指定轉換的編碼new InputStreamReader(inputStream,"gbk");同樣,輸出流與此相反,生成文件的編碼取決於new OutputStreamReader()時的編碼,作為中間載體的字符是統一的char,所以只要保證轉換時的編碼與文件編碼一致即可保證無亂碼,無需輸入流與輸出流編碼一致。


分享到:


相關文章: