1. 程式人生 > >3.7 Java之列印流和資料流(附字元位元組流練習)

3.7 Java之列印流和資料流(附字元位元組流練習)


列印流

  • 屬於輸出流
  • 分為PrintStream(位元組列印流)和PrintWriter(字元列印流)
  • 提供了一系列過載的print和println方法,用於多種資料型別的輸出
  • PrintStream和PrintWriter的輸出不會丟擲異常
  • PrintStream和PrintWriter有自動flush功能
  • System.out返回的是PrintStream的例項

例項

FileOutputStream fos = null;
    try {
        fos = new FileOutputStream(new File("D:\\IO\\text.txt"));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }//建立列印輸出流,設定為自動重新整理模式(寫入換行符或位元組 '\n' 時都會重新整理輸出緩衝區)
PrintStream ps = new PrintStream(fos,true);//位元組型列印流 例項化 if (ps != null) { // 把標準輸出流(控制檯輸出)改成檔案 System.setOut(ps);//形參為列印位元組流的物件} for (int i = 0; i <= 255; i++) { //輸出ASCII字元 System.out.print((char)i);//對應的ASCII碼 if (i % 50 == 0) { //每50個數據一行 System.out.println(); // 換行
} } ps.close();
  • 建立位元組型的列印流,緩衝流是手動重新整理的,true表示自動重新整理(flush)
  • out是標準的輸出流,預設列印到控制檯上
  • 預設控制檯輸出,重新設定位置,設定為:輸出到列印流指定的檔案中

資料流

  • 資料流有兩個類,沒有對應的reader和writer,因為不是文字的
  • 分為輸入型的資料流和輸出型的資料流
  • 資料流處理的是基本資料型別,字串和位元組陣列(8+2)
  • 作用於節點流山,屬於處理流

資料流輸出

這裡寫圖片描述

資料流輸入

這裡寫圖片描述

  • 若write讀取檔案,輸入到控制檯上,呈現亂碼
  • 正確做法:通過資料流的輸入讀取資訊,列印到控制檯上
  • 輸出時,採用輸出型資料流,相應地,輸入時,也應採用輸入型資料流,否則亂碼
  • 錯誤:用write讀取基本資料型別

字元位元組流練習

位元組流輸出

這裡寫圖片描述

  • 通過字串轉化為位元組陣列,從而使用位元組流輸出
  • 未加flush(失誤)

字元流輸出

這裡寫圖片描述
這裡寫圖片描述

  • 未加flush(失誤)

字元流輸入

這裡寫圖片描述

  • 列印到控制檯上,帶ln的print
  • readLine與換行一定配對使用
  • FileWriter(String fileName) 根據給定的檔名構造一個 FileWriter 物件
    引數為檔案路徑
    • 等效於new file,只是封裝到一起了,引數對應的還是一個file物件,本質上操作的是一個物件

字元流輸入輸出

這裡寫圖片描述

  • 下方程式碼未處理異常,自行補充
  • 輸出時,檔案物件可不存在
  • 若改成位元組流輸入輸出,則三處改動(兩個類一個數組)

總結

  • 位元組流通過byte陣列實現
  • 字元流通過char陣列或readLine【write(string)】實現
  • 緩衝流輸出一定要flush
  • 使用readline記得換行