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記得換行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章