首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java IO 流體系全景圖解:字節/字符流、緩衝/轉換流與實戰代碼模板

     編輯:Java 綜合教學

IO 流核心概念

IO 流處理設備間數據傳輸。Java 以「流」為抽象,java.io 包提供各類流類。按數據單位分:字節流(處理二進制數據:圖片、視頻、所有文件)與字符流(處理文本,本質是字節流經編碼轉換)。按流向分:輸入流(讀)、輸出流(寫)。按角色分:節點流(直接操作目標設備,如 FileInputStream)、處理流(包裝節點流提供增強功能,如 BufferedInputStream)。

四大抽象基類

基類類型核心方法
InputStream字節輸入read()、read(byte[])、close()
OutputStream字節輸出write(int)、write(byte[])、flush()、close()
Reader字符輸入read()、read(char[])、close()
Writer字符輸出write(int/char[]/String)、flush()、close()

文件流(節點流)實戰

字節流複製圖片

FileInputStream fis = new FileInputStream("a.gif");
FileOutputStream fos = new FileOutputStream("b.gif");
byte[] buf = new byte[50];
while (fis.read(buf) != -1) fos.write(buf);
fis.close(); fos.close();

字符流複製文本

FileReader fr = new FileReader("yoyo.txt");
FileWriter fw = new FileWriter("yoyo1.txt");
char[] buf = new char[40];
int len;
while ((len = fr.read(buf)) != -1) fw.write(buf, 0, len);
fr.close(); fw.close();

緩衝流(處理流)提升效率

內部維護緩衝區(默認 8KB),減少系統調用次數。

// 字節緩衡流複製大文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("reread.wmv"), 1000000);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("newmovie.wmv"), 1000000);
byte[] buf = new byte[100000];
while (bis.read(buf) != -1) bos.write(buf);
bis.close(); bos.close();

字符緩衝流關鍵方法:
BufferedReader.readLine() 讀一行(不含換行符)
BufferedWriter 無寫行方法,需配合 PrintWriter.println() 或手動寫換行符並 flush()。

轉換流:字節與字符橋樑

  • InputStreamReader:字節流 → 字符流(指定編碼)。
  • OutputStreamWriter:字符流 → 字節流(指定編碼)。

常用組合:new BufferedReader(new InputStreamReader(System.in))(鍵盤輸入);new PrintWriter(new OutputStreamWriter(System.out))(格式化輸出)。

易混淆難點總結

  1. readLine() 屬於 BufferedReader,返回 null 表示末尾。
  2. println() 屬於 PrintWriter,自動換行並 flush。
  3. flush() 強制輸出緩衝區數據,寫操作結束必須調用,否則數據可能丟失。

待探究問題

  • 字節流 read() 返回 int 而非 byte?
  • write(int) 只保留低 8 位?

歡迎在評論區交流探討!

數據流API結構 流分類 流分類2 IO流體系 字節字符流對比 四大基類 常用方法

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved