Java IO流基礎總結

前言

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

IO流類圖結構

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

你們先不要被這張圖中那麼多的類所迷惑了;其實,從這張圖來看,結構仍是很是清晰的,也是很是簡單的。雖然類不少,可是咱們經常使用的也就那麼幾個,熟悉了整個的調用流程,咱們就能夠玩的很開心的。下面,我把咱們經常使用的那幾個整理出來,以下圖所示:函數

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

字節流

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

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

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

    BufferedInputStream是字節輸入緩衝流,在BufferedInputStream的使用過程當中,會常常結合一些其它的流一塊兒使用,好比咱們看BufferedInputStream的構造函數:視頻

    BufferedInputStream(InputStream in)

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

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

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

字符流

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

  • 字符輸入流
    字符輸入流的抽象基類是Reader,咱們最經常使用的子類是BufferedReaderFileReader這兩個類。用法很少說了。

  • 字符輸出流
    字符輸出流的抽象基類是Writer,咱們最經常使用的子類是BufferedWriterFileWriter這兩個類。用法也很少說了。

爲啥用法很少說呢?由於明白了整個的類結構,接下來的使用也就是API的使用,咱們在使用過程當中須要重點關注一下編碼的問題就OK了。

總結

一篇簡單的總結,連代碼示例都木有!但願對你們有那麼一點點的幫助!

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

相關文章
相關標籤/搜索