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