java io流簡單梳理

1.io流
  1)流的概念:
      流是一組有順序的,有起點和終點的字節集合,是對數據傳輸的總稱或抽象。它的特性是進行數據傳輸;
  2)IO流的分類:
      a.根據處理數據類型的不同分爲:字符流和字節流
      b.根據數據流向不同分爲:輸入流和輸出流
  3)字節流和字符流的區別:
      字符流的由來:因爲數據編碼的不同,而有了對字符進行高效操作的流對象。本質其實就是基於字節流讀取時,去查了指定的碼錶。
      a.讀寫單位不同:字節流以字節(8bit)爲單位,字符流以字符爲單位,根據碼錶映射字符,一次可能讀多個字節。
      b.處理對象不同:字節流能處理所有類型的數據(如圖片、avi等),而字符流只能處理字符類型的數據。
      結論:只要是處理純文本數據,就優先考慮使用字符流。 除此之外都使用字節流。
  4)輸入流和輸出流
     輸入流只能進行讀操作,輸出流只能進行寫操作(即:讀入寫出)
     輸入字節流:
         a.InputStream 是所有的輸入字節流的父類,它是一個抽象類。
         b.ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三種基本的介質流,它們分別從Byte 數組、StringBuffer、和本地文件中讀取數據。
         c.PipedInputStream 是從與其它線程共用的管道中讀取數據.
         d.ObjectInputStream 和所有FilterInputStream 的子類都是裝飾流(裝飾器模式的主角)。
     輸出字節流:
         a.OutputStream 是所有的輸出字節流的父類,它是一個抽象類。
         b.ByteArrayOutputStream、FileOutputStream 是兩種基本的介質流,它們分別向Byte 數組、和本地文件中寫入數據。
         c.PipedOutputStream 是向與其它線程共用的管道中寫入數據。
         d.ObjectOutputStream 和所有FilterOutputStream 的子類都是裝飾流。
     總結:
        輸入流:InputStream或者Reader:從文件中讀到程序中;
        輸出流:OutputStream或者Writer:從程序中輸出到文件中;
   5)節點流與處理流:
           直接使用節點流,讀寫不方便,爲了更快的讀寫文件,纔有了處理流。
       節點流:直接與數據源相連,讀入或讀出。
               a.父類:InputStream 、OutputStream、 Reader、 Writer
               b.文件:FileInputStream 、FileOutputStrean、FileReader、FileWriter 文件進行處理的節點流
               c.數組:ByteArrayInputStream、 ByteArrayOutputStream、 CharArrayReader 、CharArrayWriter 對數組進行處理的節點流(對應的不再是文件,而是內存中的一個數組)
               d.字符串:StringReader、StringWriter對字符串進行處理的節點流
               e.管道:PipedInputStream 、PipedOutputStream 、PipedReader 、PipedWriter 對管道進行處理的節點流
       處理流:處理流和節點流一塊使用,在節點流的基礎上,再套接一層,套接在節點流上的就是處理流。 
               a.緩衝流:BufferedInputStrean 、BufferedOutputStream、 BufferedReader、 BufferedWriter 增加緩衝功能,避免頻繁讀寫硬盤。
               b.轉換流:InputStreamReader 、OutputStreamReader實現字節流和字符流之間的轉換。
               c.數據流:DataInputStream 、DataOutputStream 等-提供將基礎數據類型寫入到文件中,或者讀取出來。
    參考博文:https://blog.csdn.net/zhaoyanjun6/article/details/54292148/#commentBox           
    

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