Java IO流基礎總結

前言

好久不用Java的IO流,把好多的基礎知識都忘了,昨天在寫一段代碼,發現好多細節都忘了。那天在組織組內代碼評審的時候,發現有人在亂用IO流相關的類,所以還是寫篇文章,把這個知識點總結一下。

IO流類圖結構

對於Java這種龐大的體系,我們要學某一塊知識點,只有從整體上把握,整體上形成一個知識架構,這樣才能更好的把握學習內容和學習方向。所以呢,和別的博文一樣,上來就先來一張別的博客貼來的類結構圖。

大家先不要被這張圖中那麼多的類所迷惑了;其實,從這張圖來看,結構還是非常清晰的,也是非常簡單的。雖然類很多,但是我們常用的也就那麼幾個,熟悉了整個的調用流程,我們就可以玩的很開心的。下面,我把我們常用的那幾個整理出來,如下圖所示:

從我們經常使用的角度來說,IO流分爲字符流和字節流,下面就分別從字符流和字節流展開說明和總結。

字節流

字節流是指在傳輸過程中,傳輸數據的最基本單位是字節的流。

  • 字節輸入流
    字節輸入流的的抽象基類是InputStream,我們最常用的子類是FileInputStreamBufferedInputStream這兩個類。

    FileInputStream被稱爲文件字節輸入流,意思指對文件數據以字節的形式進行讀取操作,如讀取圖片視頻等;這種我們經常在讀取文件時會用到。

    BufferedInputStream是字節輸入緩衝流,在BufferedInputStream的使用過程中,會經常結合一些其它的流一起使用,比如我們看BufferedInputStream的構造函數:

    BufferedInputStream(InputStream in)

    BufferedInputStream本質上是通過一個內部緩衝區數組實現的。例如,在新建某輸入流對應的BufferedInputStream後,當我們通過read()讀取輸入流的數據時,BufferedInputStream會將該輸入流的數據分批的填入到緩衝區中。每當緩衝區中的數據被讀完之後,輸入流會再次填充數據緩衝區;如此反覆,直到我們讀完輸入流數據位置。通過BufferedInputStream,我們可以提高字節流的讀取和處理速度。

  • 字節輸出流
    字節輸出流的抽象基類是OutputStream,我們最常用的子類是FileOutputStreamBufferedOutputStream這兩個類。

    關於字節輸出流這兩個常用類就不細說了,和上面的字節輸入流一樣。

字符流

字符流是指在傳輸過程中,傳輸數據的最基本單位是字符的流。

  • 字符輸入流
    字符輸入流的抽象基類是Reader,我們最常用的子類是BufferedReaderFileReader這兩個類。用法不多說了。

  • 字符輸出流
    字符輸出流的抽象基類是Writer,我們最常用的子類是BufferedWriterFileWriter這兩個類。用法也不多說了。

爲啥用法不多說呢?因爲明白了整個的類結構,接下來的使用也就是API的使用,我們在使用過程中需要重點關注一下編碼的問題就OK了。

總結

一篇簡單的總結,連代碼示例都木有!希望對大家有那麼一點點的幫助!

2019年7月28日 於內蒙古呼和浩特。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章