happy in java之io流簡介
閑來沒事,重溫馬士兵老師的java基礎。。。
流 水流的流 流氓的流,,流 英文叫做stream,溪流
流的分類:
流是用來讀寫數據的。
流就像水流一樣,File類封裝的是文件的名字,它是內存裏頭的一個對象,OK,但是真正的文件是在硬盤上的一塊空間,在這文件裏頭,存著各種各樣的數據,那麽我們想讀這數據怎麽辦呢?是這樣來讀,是通過一個流的方式來讀。
如下圖,比方說這是我們文件,咱們要想從程序讀數據,大家都知道,對於計算機來說,你讀任何的數據都是什麽樣的形式,是不是都是010101 這些形式,對吧 。
怎麽樣吧這些文件裏邊的內容個讀出來,你就把這個文件想象成一個小桶。文件就是個桶,你怎麽從桶裏邊取水呢?或者說怎麽從文件裏邊取數據呢,常見的取法是這樣的,我們弄一根管道懟到桶上,然後把這根管道,哐唧
你要往裏頭寫數據呢?反過來,咣唧一根管道懟上去,從管道這一頭開始咵唧咵唧往裏頭灌水。
除了你可以從文件讀寫數據呢,你還可以從網絡,比如這根管道咵唧從我機器上懟到你機器上了,我說一句話,你那邊就收著了。你說一句話我這邊就收著了。OK?
有的時候一根管道不夠使,比方說這根管道讀過來的水,裏有雜質,外邊再包一層管道, 比方說你讀過來的數據,最原始的數據肯定是010101,一個字節一個字節的往外讀,當你這樣讀的時候你覺得這樣的方法不合適,沒關系。外邊再包一層強大一點的管道,這個管道可以吧010101轉換成字符串,哐當讀出來,這個管道就包在了原始管道的外邊, 這就是流式的輸入輸出,這些管道就是java的流。
流的分類:
根據不同的角度分成不同的類型,io包裏頭定義了所有的流。
輸入流or輸出流的劃分:都是站在程序打的角度來說的,相對於程序來說的。
字節流or字符流:
字節流:最原始的一個流, 讀出來的數據就是010101,只不過是按照字節來讀的,一個字節是8位。
字符流:一個字符一個字符往外讀,字符是2個字節。Java裏邊是Unicode字符串一個字符是2個字節。 Utf16 ok
節點流or處理流:
節點流:這根管道直接懟到數據源上的流。
處理流:套在其他管道之上的流。
凡是以Stream結尾的都是字節流,最原始的讀取數據的方式,一個字節一個字節的讀。
happy in java之io流簡介