1. 程式人生 > >Java IO ---學習筆記(標準流、記憶體讀寫流、順序輸入流)

Java IO ---學習筆記(標準流、記憶體讀寫流、順序輸入流)

1、標準流

  語言包 java.lang 中的 System 類管理標準輸入/輸出流和錯誤流。

  System.in從 InputStream 中繼承而來,用於從標準輸入裝置中獲取輸入資料(通常是鍵盤)

  System.out從 PrintStream 中繼承而來,把輸入送到預設的顯示裝置(通常是顯示器)

  System.err也是從 PrintStream 中繼承而來,把錯誤資訊送到預設的顯示裝置(通常是顯示器)      

     每當 main 方法被執行時,就會自動生產上述三個物件。這裡就不再寫程式碼驗證了。  

2、記憶體讀寫流

  為了支援在記憶體上的 I/O,java.io 中提供了類:ByteArrayInputStream、ByteArrayOutputStream 和 StringBufferInputStream

  1. ByteArrayInputStream 可以從指定的位元組陣列中讀取資料
  2. ByteArrayOutputStream 中提供了緩衝區可以存放資料(緩衝區大小可以在構造方法中設定,預設為32),可以用 write() 方法向其中寫入資料,然後用 toByteArray() 方法將緩衝區中的有效位元組寫到位元組陣列中去。size() 方法可以知道寫入的位元組數;reset() 可以丟棄所有內容。
  3. StringBufferInputStream 與 ByteArrayInputStream 相類似,不同點在於它是從字元緩衝區 StringBuffer 中讀取16位的 Unicode 資料,而不是8位的位元組資料(已被 StringReader 取代)

   這裡只做簡要的介紹,有興趣的同學可以檢視一下這些類裡具體的方法。

3、順序輸入流

  java.io 中提供了類 SequenceInputStream,使應用程式可以將幾個輸入流順序連線起來。順序輸入流提供了將多個不同的輸入流統一為一個輸入流的功能,這使得程式可能變得更加簡潔。

例如:

FileInputStream f1,f2;
String s;
f1 = new FileInputStream("file1.txt");
f2 = new FileInputStream("file2.txt");
SequenceInputStream fs = new SequenceInputStream(f1,f2);
DataInputeStream ds 
= new DataInputStream(fs); while((s = ds.readLine()) != null) { System.out.println(s); }