理解 FileWriter 类的基本用途及其在 Java I/O 体系中的位置
掌握 FileWriter 的常用构造方法与核心写入方法
能够使用 FileWriter 实现文本文件的创建、覆盖与追加操作
区分 FileWriter 与 FileOutputStream 的适用场景
FileWriter 是 Java 中用于将字符数据写入文件的类。它继承自 OutputStreamWriter,属于字符流(Character Stream),专门用于处理文本内容(如 .txt、.log 等文件)。由于它直接操作字符(char、String),并支持指定字符编码(默认使用平台编码),因此非常适合读写纯文本文件。
注意:
FileWriter不适用于处理二进制数据(如图片、音频等),这类场景应使用字节流(如FileOutputStream)。
FileWriter 提供了五种构造方法,满足不同使用需求:
基本写入操作
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
class WriteFile {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String path = scn.nextLine();
try (FileWriter writer = new FileWriter(path)) {
String str = "Hello Developers!\nThis is about Programming";
writer.write(str);
System.out.println("数据已成功写入文件。");
} catch (IOException e) {
System.out.println("写入文件时发生错误: " + e.getMessage());
}
}
}上述代码使用 try-with-resources 语法,确保
FileWriter在使用后自动关闭,避免资源泄漏。
若希望在文件末尾添加内容而非覆盖,可将构造函数的第二个参数设为 true。
import java.io.*;
class AppendingFile {
public static void main(String[] args) {
String fileName = "output.txt";
try (FileWriter writer = new FileWriter(fileName, true)) {
writer.write("\n在文件末尾追加此行内容。");
System.out.println("内容已成功追加到文件。");
} catch (IOException e) {
System.out.println("追加文件时发生错误: " + e.getMessage());
}
}
}所有
write和append方法均可能抛出IOException,需进行异常处理。
选择建议:
写纯文本 → 用 FileWriter
写任何非文本内容 → 用 FileOutputStream
FileWriter 是专用于写入字符数据的便捷工具类。
默认使用平台字符编码,若需指定编码(如 UTF-8),应使用 OutputStreamWriter 包装 FileOutputStream。
支持覆盖写入和追加写入两种模式。
必须处理 IOException,推荐使用 try-with-resources 自动管理资源。
与 FileOutputStream 本质区别在于:前者处理字符,后者处理字节。
如果需要以 UTF-8 编码写入文本文件,能否直接使用 FileWriter?如果不能,应如何实现?
为什么 FileWriter 不适合写入图片或音频文件?从底层数据表示角度解释。
在不使用 try-with-resources 的情况下,手动关闭 FileWriter 时应注意什么?