概述:
在程式中所有的資料都是以流的方式進行傳輸和儲存的,程式通過輸入流讀取資料;當程式需要將一些資料長期儲存起來的時候使用輸出流完成。
IO流的本質:
本地裝置與不同裝置之間資料的傳輸,例如:本地檔案拷貝,上傳檔案和下載檔案等等。
注意:
1.但凡是對資料的操作,Java都是通過流的方式來操作的
2.程式中的輸入輸出都是以流的形式儲存的,流中儲存的實際上全都是位元組檔案。
3.IO流可以做到資料的持久化,但是IO流本質上是用來處理檔案系統以及不同裝置之間的資料傳輸。
IO流的分類:
有兩種不同的分類方式:
按照資料傳輸的方向分類:
1.輸入流:從外界(鍵盤、網路、檔案…)讀取資料到記憶體
2.輸出流:用於將程式中的資料寫出到外界(顯示器、檔案…)
按照傳輸的資料型別分類:
1.位元組流:一般針對二進位制檔案【視訊,音訊,圖片】
2.字元流:一般針對文字檔案【xml、json、html、txt、md….】
**流的操作的三要素:
1.資料來源:資料從哪裡來。(記憶體可以當做目的地,也可以當做中轉站)
2.目的地:資料到哪裡去。(記憶體可以當做目的地,也可以當做中轉站)
3.交通工具:
a.選對流的型別,是需要輸入流還是需要輸出流,還是兩個都需要
b.根據確定的流向在IO流框架中選取自己認為最適合的流
位元組流和字元流的區別:
1.讀寫單位不同:位元組流以位元組(8Bit)為單位,字元流以字元為單位,根據碼錶對映字元,一次可能讀多個位元組。
2.處理物件不同:位元組流能處理所有型別的資料(如圖片、avi等),而字元流只能處理字元型別的資料。例如:本文檔案,json,html,css,js,xml
注意:只要是處理純文字資料,就優先考慮使用字元流,除此之外都使用位元組流
IO流繼承體系結構圖:
本作品採用《CC 協議》,轉載必須註明作者和本文連結