一、FileWriter类概述
FileWriter
是java.io
包中的字符输出流类,将字符数据写入文本文件。继承自OutputStreamWriter
,默认使用系统字符编码(如UTF-8)。特点:
- 若文件不存在会自动创建
- 默认覆盖文件内容(可通过追加模式修改)
二、核心方法及使用
1. 构造函数
与FileReader大同小异,其实几乎所有的流的构造方法都大同小异;
方法签名 |
说明 |
|
通过路径创建(覆盖模式) |
|
追加模式(true=追加) |
|
通过File对象创建 |
示例:
// 覆盖模式(默认)
FileWriter writer1 = new FileWriter("output.txt");
// 追加模式(true)
FileWriter writer2 = new FileWriter("log.txt", true);
// 通过File对象
File file = new File("data.dat");
FileWriter writer3 = new FileWriter(file);
2. write() 方法
基本上这些流的逻辑都差不多;参照一下下面的代码案例就全部清晰了;
方法签名 |
说明 |
|
写入单个字符(ASCII码);直接写单个字 符也是可以的 |
|
写入整个字符数组 |
|
写入整个字符串 |
|
写入数组指定区间 |
|
写入字符串子段 |
示例1:逐字符写入
FileWriter writer = new FileWriter("chars.txt")
writer.write('H'); // 写入单个字符
writer.write(69); // ASCII码'E'(69 → 'E')
示例2:批量写入
FileWriter给人最好的感觉就是他可以直接写入字符串,很人性,很符合人的逻辑;
char[] data = {'J','a','v','a',' ','编','程'};
String text = "\n学习FileWriter";
FileWriter writer = new FileWriter("demo.txt", true)
writer.write(data); // 写入字符数组
writer.write(text);//直接写入字符串也是可以的,一看就很人性
writer.write(text, 1, 5); // 写入"习FileW"
3. flush() 与 close()
flush()
:强制将缓冲区数据写入文件(不关闭流)close()
:先执行flush(),再释放资源
手动刷新示例:
FileWriter writer = new FileWriter("buffer.txt");
writer.write("数据仍在内存缓冲区");
writer.flush(); // 立即写入磁盘
writer.write("追加内容");
writer.close(); // 最终全部写入
三、注意事项
- 资源释放:始终使用try-with-resources或手动close()
- 性能优化:单次写入超过8000字符时,建议直接使用
write(String)