這段時間學習JAVA的流類,感覺各種流五花八門看得眼花,特此簡單整理。

      JAVA的I/O流庫提供大量的流類(java.io)。其中,所有輸入流是抽象類InputStream(字節輸入流)或抽象類Reader(字符輸入流)的子類,而所有的輸出流類都是抽象類OutputStream(字節流)和抽象類Write(字符流)的子類。

  字節流:

   - FileInputSrteam

    功能為從文件中以字節的形式讀取數據,利用 .read()方法將讀取的字節返回,終止標志為-1返回值。

   - FileOutputstream

    功能為將內存中的數據以字節流的形式送到目標文件,利用 .write(byte [] b)方法輸送字節到數組b,

   - System.in

    一個很原始的字節流(個人感情因素。。。),是System的一個類成員,原型為

     public final static InputStream in = nullInputStream();

    指向的源為標準輸入:鍵盤

   - System.out

    同樣是一個很原始的字節流。。。。

     public final static PrintStream out = nullPrintStream();

    輸出的目的地是屏幕文本

  字符流:

   字節流本身的局限性是不能直接操作Unicode字符,例如漢字是占用兩個字節空間,使用字節流讀取不當有可能發生亂碼現象。因此JAVA提供了比較高級的字符流來處理,在Unicode中一個漢字占據一個字符,因此可以保證正確處理。

  - FileReader

   抽象類Reader的子類,從制定目標按字符讀取數據,順序讀取文件中的字符直至流關閉。

     public class FileReader extends InputStreamReader

  - FileWrite

   抽象類Write的子類,以字符形式輸送數據到目的地直至流關閉。

     public class FileWriter extends OutputStreamWriter

 -------------------------------------------------------------------------------------

    System.in是指向鍵盤的字節輸入流,如果我們需要從鍵盤讀取字符,可以在.in流上“套一根管子”。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 利用.in來構造一個字符流的“管子”。這樣從鍵盤就能以字符的形式讀入數據。