登录
首页 >  文章 >  java教程

FileReader和FileWriter使用全解析

时间:2026-02-21 14:34:40 436浏览 收藏

本文深入解析了Java中FileReader和FileWriter这两个轻量级字符流类的核心用法与实战技巧:从基础的单字符读写、带缓冲区的高效文件复制,到追加写入、资源自动管理等关键细节一应俱全;同时直击痛点,提醒开发者注意默认编码导致的中文乱码风险,并给出使用InputStreamReader/OutputStreamWriter指定编码、以及升级为BufferedReader/BufferedWriter优化大文件性能的专业建议——既适合初学者快速上手文本操作,也为实际项目中的健壮性与兼容性提供了清晰指引。

在Java中如何使用FileReader和FileWriter操作文件

在Java中,FileReaderFileWriter 是用于读取和写入字符文件的便捷类。它们属于 java.io 包,适用于处理文本数据,以字符为单位操作,适合处理中文、英文等字符内容。

1. 使用 FileReader 读取文件

FileReader 用于从文件中逐个读取字符。可以使用 read() 方法一次读一个字符,也可以配合 char[] 数组提高效率。

示例:读取文件内容并打印

try (FileReader fr = new FileReader("input.txt")) {
int ch;
while ((ch = fr.read()) != -1) {
System.out.print((char) ch);
}
} catch (Exception e) {
e.printStackTrace();
}

说明:
- read() 返回的是字符的ASCII值(int类型),到达文件末尾返回 -1。
- 使用 try-with-resources 可自动关闭流,避免资源泄漏。

2. 使用 FileWriter 写入文件

FileWriter 用于向文件写入字符数据。默认情况下会覆盖原文件内容,若想追加内容,需使用构造函数的 append 模式。

示例:写入字符串到文件

try (FileWriter fw = new FileWriter("output.txt")) {
fw.write("Hello, Java File Writing!\n");
fw.write("这是第二行内容。");
} catch (Exception e) {
e.printStackTrace();
}

追加模式写入:

FileWriter fw = new FileWriter("output.txt", true); // 第二个参数为 true 表示追加

3. 结合 FileReader 和 FileWriter 实现文件复制

可以将一个文本文件的内容读取后写入另一个文件,实现复制功能。

try (
FileReader fr = new FileReader("input.txt");
FileWriter fw = new FileWriter("copy.txt")
) {
char[] buffer = new char[1024];
int len;
while ((len = fr.read(buffer)) != -1) {
fw.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}

说明:
- 使用字符数组作为缓冲区,提升读写效率。
- read(char[] cbuf) 返回实际读取的字符数,write 写入指定长度内容。

4. 注意事项与建议

- FileReader 和 FileWriter 使用平台默认编码,处理中文时可能出现乱码。如需指定编码,应使用 InputStreamReader 和 OutputStreamWriter 配合 FileInputStream 和 FileOutputStream。
- 不适合处理大文件,建议结合 BufferedReader 和 BufferedWriter 提升性能。
- 始终使用 try-with-resources 确保流被正确关闭。

基本上就这些。对于简单的文本读写任务,FileReader 和 FileWriter 足够方便实用。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>