標籤:
概念
IO,Input和Output的簡寫,即輸入輸出,因此IO流就是Input Output流。IO流相當於一個資料管道,主要用來
處理裝置之間的資料轉送。
原理
輸入、輸出都是相對於程式本身來講的。從檔案中讀取資料輸出到程式中即為輸入資料流,例如從資料庫中查詢一條
使用者資訊。 從程式中將資料儲存到檔案中為輸出資料流,例如向資料庫中添加一條使用者資訊。
IO流工作原理樣本圖
分類
Java.io中定義了多個流類型來實現輸入/輸出功能,從不同的角度進行分類後如下:
按照資料流的方向不同:輸入資料流和輸出資料流
按照處理資料單位不同:位元組流和字元流
按照實現功能類型不同:節點流和處理流
注意:
位元組流是最基本的,它的所有的InputStream和OutputStream的子類都是,主要用在處理位元據,它是按位元組
來處理的。但實際中很多的資料都是文本,所以有了字元流的概念,它是按虛擬機器的encode來處理,也就是要進行字
符集的轉化。
從上面一段文字,位元組流和字元流的主要區別是什麼呢?
1)位元組流在操作時不會用到緩衝區(記憶體),直接對檔案本身進行操作。而字元流在操作時使用了緩衝區,通過緩
沖區再操作檔案。
2)真正儲存和傳輸資料時都是以位元組為單位的,在硬碟上的所有檔案(圖片,聲音,視頻等等)都是以位元組形式存
在的,字元只是存在於記憶體當中的。所以,位元組流適用範圍更為寬廣
其中輸入輸出資料流和位元組字元流根據它們的定義很容易理解。簡單介紹下節點流和處理流。在下篇文章中會做詳細
介紹。
IO流分類整合導圖
IO流分類整合導圖(1)
IO流分類整合導圖(2)
總結
IO流是在裝置之間傳輸資料用的。結合生活中的執行個體,將一根水管一頭插在水桶中,另外一頭插在水池中。當我
們需要向水池中儲存水的時候,就需要通過中間的水管將一桶桶的水倒入水池中。當需要用水的時候同樣需要通過中
間的水管從水池中吸水到水桶中。
等價劃分到我們的IO流中:
水管------------------流
水流------------------資料流
水池-------------------檔案
水桶-------------------程式
化抽象為具體,這樣一來是不是容易理解多了呢?
JAVA集錦--IO流梳理(一)