1. 程式人生 > >資料流的基本概念

資料流的基本概念

    資料流是一串連續不斷的資料的集合,就象水管裡的水流,在水管的一端一點一點地供水,而在水管的另一端看到的是一股連續不斷的水流。資料寫入程式可以是一段、一段地向資料流管道中寫入資料,這些資料段會按先後順序形成一個長的資料流。對資料讀取程式來說,看不到資料流在寫入時的分段情況,每次可以讀取其中的任意長度的資料,但只能先讀取前面的資料後,再讀取後面的資料。不管寫入時是將資料分多次寫入,還是作為一個整體一次寫入,讀取時的效果都是完全一樣的。 
  “流是磁碟或其它外圍裝置中儲存的資料的源點或終點。”
在電腦上的資料有三種儲存方式,一種是外存,一種是記憶體,一種是快取。比如電腦上的硬碟,磁碟,U盤等都是外存,在電腦上有記憶體條,快取是在CPU裡面的。外存的儲存量最大,其次是記憶體,最後是快取,但是外存的資料的讀取最慢,其次是記憶體,快取最快。這裡總結從外存讀取資料到記憶體以及將資料從記憶體寫到外存中。對於記憶體和外存的理解,我們可以簡單的理解為容器,即外存是一個容器,記憶體又是另外一個容器。那又怎樣把放在外存這個容器內的資料讀取到記憶體這個容器以及怎麼把記憶體這個容器裡的資料存到外存中呢?
 在Java類庫中,IO部分的內容是很龐大的,因為它涉及的領域很廣泛:
     標準輸入輸出,檔案的操作,網路上的資料流,字串流,物件流,zip檔案流等等,**java中將輸入輸出抽象稱為流**,就好像水管,將兩個容器連線起來。將資料衝外存中讀取到記憶體中的稱為輸入流,將資料從記憶體寫入外存中的稱為輸出流。
流是一個很形象的概念,當程式需要讀取資料的時候,就會開啟一個通向資料來源的流,這個資料來源可以是檔案,記憶體,或是網路連線。類似的,當程式需要寫入資料的時候,就會開啟一個通向目的地的流。
  總結的基本概念如下:

1) 資料流
一組有序,有起點和終點的位元組的資料序列。包括輸入流和輸出流。


2) 輸入流(Input Stream):
程式從輸入流讀取資料來源。資料來源包括外界(鍵盤、檔案、網路…),即是將資料來源讀入到程式的通訊通道


** 3) 輸出流
程式向輸出流寫入資料。將程式中的資料輸出到外界(顯示器、印表機、檔案、網路…)的通訊通道。


採用資料流的目的就是使得輸出輸入獨立於裝置。
Input Stream不關心資料來源來自何種裝置(鍵盤,檔案,網路)Output Stream不關心資料的目的是何種裝置(鍵盤,檔案,網路)
4 資料流分類:
流序列中的資料既可以是未經加工的原始二進位制資料,也可以是經一定編碼處理後符合某種格式規定的特定資料。因此Java中的流分為兩種:

1) 位元組流:資料流中最小的資料單元是位元組 2) 字元流:**資料流中最小的資料單元是字元, Java中的字元是Unicode編碼,一個字元佔用兩個位元組。

作者:zcoolbb
連結:https://www.jianshu.com/p/2a4a4056eae7
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。