001.流 上卷 概念

1.JAVA流式輸入/輸出原理

站在程序的角度思考問題

流是用來讀寫數(shù)據(jù)的,Java有一個類叫File,它封裝的是文件的文件名,只是內(nèi)存里面的一個對象,真正的文件是在硬盤上的一塊空間,在這個文件里面存放著各種各樣的數(shù)據(jù),我們想讀文件里面的數(shù)據(jù)怎么辦呢?是通過一個流的方式來讀,咱們要想從程序讀數(shù)據(jù),對于計算機來說,無論讀什么類型的數(shù)據(jù)都是以010101101010這樣的形式讀取的。怎么把文件里面的數(shù)據(jù)讀出來呢?你可以把文件想象成一個小桶,文件就是一個桶,文件里面的數(shù)據(jù)就相當于是這個桶里面的水,那么我們怎么從這個桶里面取水呢,也就是怎么從這個文件讀取數(shù)據(jù)呢。

2.輸入輸出流分類

不同流的分類,仔細看看圖

java.io.* 包里面定義了所有的流,所以一說流指的就是IO包里面的

什么叫輸入流?什么叫輸出流?用一根管道一端插進文件里程序里面,然后開始讀數(shù)據(jù),那么這是輸入還是輸出呢?如果站在文件的角度上,這叫輸出,如果站在程序的角度上,這叫輸入。

記住,以后說輸入流和輸出流都是站在程序的角度上來說。

3.節(jié)點流和處理流

處理流會提高效率

你要是對原始的流不滿意,你可以在這根管道外面再套其它的管道,套在其它管道之上的流叫處理流。為什么需要處理流呢?這就跟水流里面有雜質(zhì),你要過濾它,你可以再套一層管道過濾這些雜質(zhì)一樣。

3.1 節(jié)點流類型

紅色區(qū)域,使用還是比較多的

節(jié)點流就是一根管道直接插到數(shù)據(jù)源上面,直接讀數(shù)據(jù)源里面的數(shù)據(jù),或者是直接往數(shù)據(jù)源里面寫入數(shù)據(jù)。典型的節(jié)點流是文件流:

  • 字節(jié)流
    • 文件的字節(jié)輸入流(FileInputStream)
    • 文件的字節(jié)輸出流(FileOutputStream)
  • 字符流
    • 文件的字符輸入流(FileReader)
    • 文件的字符輸出流(FileWriter)。

使用頻率還是比較高的,這些都是基石

3.2 處理流類型

紅色部分還是比較重要的

處理流是包在別的流上面的流,相當于是包到別的管道上面的管道。

4.InputStream(輸入流)

輸入流關(guān)系圖

凡是以InputStream結(jié)尾的管道,都是以字節(jié)的形式向我們的程序輸入數(shù)據(jù)。

4.1.InputStream的基本方法

常用方法
  • read()方法是一個字節(jié)一個字節(jié)地往外讀,每讀取一個字節(jié),就處理一個字節(jié)。
  • read(byte[] buffer)方法讀取數(shù)據(jù)時,先把讀取到的數(shù)據(jù)填滿這個byte[]類型的數(shù)組buffer(buffer是內(nèi)存里面的一塊緩沖區(qū)),然后再處理數(shù)組里面的數(shù)據(jù)。
    這就跟我們?nèi)∷粯?,先用一個桶去接,等桶接滿水后再處理桶里面的水。如果是每讀取一個字節(jié)就處理一個字節(jié),這樣子讀取也太累了。

5.OutputStream(輸出流)

跟上面的一樣

5.1 OutputStream的基本方法

輸出流,紅色部分

6.Reader流

字符流輸入流

6.1.Reader的基本方法

內(nèi)容為中文的常用

7.Writer流

關(guān)系圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容