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

Java IO 流全景指南:位元組與字符流實戰詳解

     編輯:Java 綜合教學

Java IO 流全景指南:位元組與字符流實戰詳解

Java IO 體系以「流」為抽象,分為位元組流(InputStream/OutputStream)與字符流(Reader/Writer)兩大家族。本文通過完整代碼範例,系統講解讀寫操作四大核心步驟、常用實現類與最佳實踐。

一、IO 操作四步曲

  1. 使用 File 定位目標檔案
  2. 實例化具體流物件(節點流/處理流)
  3. 執行讀寫操作(緩衝區/單字元/單位元組)
  4. 關閉流釋放資源(try-with-resources 最佳)

二、位元組輸出流 FileOutputStream

File file = new File("f:" + File.separator + "zdb1.txt");
try (OutputStream out = new FileOutputStream(file, true)) { // true 為追加模式
    String str = "十年規劃,方向明確,不再迷失。";
    out.write(str.getBytes());
} // 自動關閉

三、位元組輸入流 FileInputStream 兩種讀法

3.1 固定緩衝區讀取

try (InputStream in = new FileInputStream(file)) {
    byte[] buf = new byte[1024];
    int len = in.read(buf);
    System.out.println(new String(buf, 0, len));
}

3.2 按檔案大小一次性讀取

byte[] buf = new byte[(int) file.length()];
for (int i = 0; i < buf.length; i++) {
    buf[i] = (byte) in.read();
}
System.out.println(new String(buf));

四、字符流 FileReader/FileWriter

字符流內建緩衝,直接操作 char 陣列或 String,寫入需 flush() 或 close() 強制刷新:

// 讀取
try (Reader in = new FileReader(file)) {
    char[] cbuf = new char[1024];
    int len = in.read(cbuf);
    System.out.println(new String(cbuf, 0, len));
}
// 寫入
try (Writer writer = new FileWriter(file, true)) {
    writer.write("你今天好好學習了嗎?");
}

五、位元組流 vs 字符流 核心差異

維度位元組流字符流
基本單位byte (8 bits)char (16 bits)
緩衝機制直接操作檔案,無緩衝經過緩衝區處理
適用場景圖片、視頻、二進制檔案文本檔案、字符編碼轉換
關閉行為直接關閉需刷新緩衝區才生效

實務上:傳輸與存儲皆以位元組為本,操作文本優先選字符流;需轉碼時用 InputStreamReader/OutputStreamWriter 橋接。

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