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

FileOutputStream vs FileWriter:字節流與字符流選擇指南

     編輯:Java 綜合教學

FileOutputStream vs FileWriter:字節流與字符流選擇指南

Java 寫文件有兩條主流路徑,本質區別在於字節流與字符流。

代碼對比

FileOutputStream(字節流)

File fout = new File(filePath);
FileOutputStream fos = new FileOutputStream(fout);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos, "UTF-8"));
out.write("something");

FileWriter(字符流)

FileWriter fw = new FileWriter(filePath);
BufferedWriter out = new BufferedWriter(fw);
out.write("something");

官方規範定位

  • FileOutputStream:適用於原始字節數據寫入(圖片、視頻、二進制文件)
  • FileWriter:適用於字符流寫入(文本、日誌、CSV、JSON)

設計模式視角

FileWriter 是裝飾器模式經典應用:

// 簡化結構
FileWriter extends OutputStreamWriter extends Writer
// OutputStreamWriter 將字節流轉為字符流(指定編碼)
// BufferedWriter 增加緩衝提升性能

關鍵差異總結

維度FileOutputStreamFileWriter
數據類型byte[] / int(byte)char[] / String / int(char)
編碼控制需手動指定 OutputStreamWriter(charset)構造器可指定編碼,默認平台編碼
適用場景二進制文件、圖片、序列化輸出文本文件、配置、日誌、報表
轉字節數組直接支援需經 OutputStreamWriter

選擇建議

  • 寫文本 → FileWriter 或 Files.writeString() (JDK 11+)
  • 寫二進制 → FileOutputStream 或 Files.write()
  • 需精確控制編碼 → OutputStreamWriter + FileOutputStream
  • 高性能大文本 → BufferedWriter 包裝 + 適當緩衝區

來源:ProgramCreek

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