3.7 Java之列印流和資料流(附字元位元組流練習)
阿新 • • 發佈:2018-12-03
列印流
- 屬於輸出流
- 分為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記得換行