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

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

  字節(jié)流:

   - FileInputSrteam

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

   - FileOutputstream

    功能為將內(nèi)存中的數(shù)據(jù)以字節(jié)流的形式送到目標(biāo)文件,利用 .write(byte [] b)方法輸送字節(jié)到數(shù)組b,

   - System.in

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

     public final static InputStream in = nullInputStream();

    指向的源為標(biāo)準(zhǔn)輸入:鍵盤

   - System.out

    同樣是一個很原始的字節(jié)流。。。。

     public final static PrintStream out = nullPrintStream();

    輸出的目的地是屏幕文本

  字符流:

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

  - FileReader

   抽象類Reader的子類,從制定目標(biāo)按字符讀取數(shù)據(jù),順序讀取文件中的字符直至流關(guān)閉。

     public class FileReader extends InputStreamReader

  - FileWrite

   抽象類Write的子類,以字符形式輸送數(shù)據(jù)到目的地直至流關(guān)閉。

     public class FileWriter extends OutputStreamWriter

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

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

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