Java文件写入详解:FileWriter和BufferedWriter的使用
编辑Java的文件操作包含读写两个方面。对于读取操作,Java提供了Reader抽象类;与之对应,写入操作则由Writer抽象类支持。Writer作为所有输出字符流的统一接口,允许将数据写入文件,实现持久化存储。这种设计确保了读写操作的一致性和灵活性。
FileWriter
FileWriter 是 Writer 的一个实现类,用于直接将字符写入到文件中
FileWriter 创建
绝对路径、相对路径、File 对象都可以创建 Writer,默认会自动创建文件
//绝对路径
FileWriter writer = new FileWriter("/Users/admin/Documents/log/testWrite.txt");
//相对路径
FileWriter writer = new FileWriter("testWrite.txt");
//File 对象
FileWriter writer = new FileWriter(new File("/Users/admin/Documents/log/testWrite.txt"));
文件覆盖写入
在创建 FileWriter 时,可以在构造器里设置当前写入模式为覆盖写入,每次重新创建对象后写入都会覆盖原有文件!
//构造器第二个参数,默认false - 覆盖写入
try (FileWriter writer =
new FileWriter("/Users/admin/Documents/log/testWrite.txt", false)) {
writer.write("测试 Writer,我是第一行");
//写入换行
writer.write(System.lineSeparator());
writer.write("测试 Writer,我是第一行");
} catch (Exception e) {
e.printStackTrace();
}
文件结果:
文件追加写入
FileWriter 构造器第二个参数设置为「true」,写入文件的时候不会覆盖原有内容,会直接在文件末尾进行追加
try (FileWriter writer =
new FileWriter("/Users/admin/Documents/log/testWrite.txt", true)) {
writer.write("测试追加 Writer,我是第三行");
//写入换行
writer.write(System.lineSeparator());
writer.write("测试追加 Writer,我是第四行");
} catch (Exception e) {
e.printStackTrace();
}
文件结果:
BufferedWriter
BufferedWriter 是 Writer 的另一个实现类,它包装了一个缓存区域,数据的写入会先进入到缓冲区,只有当缓冲区满了或者手动调用「flush」方法才会通过内部的 Writer 真正写入到文件中
try (BufferedWriter writer = new BufferedWriter(
new FileWriter("/Users/admin/Documents/log/testWrite.txt", false))) {
writer.write("测试 BufferedWriter,我是第一行");
//写入换行
writer.write(System.lineSeparator());
writer.write("测试 BufferedWriter,我是第二行");
//如果手动调用 flush 方法,数据就会实时写入到文件中
//writer.flush();
//测试缓存 - sleep 过程中看文件是没有内容的
TimeUnit.SECONDS.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
BufferedWriter 提供了「newLine」方法,可以用于换行,其内部实现就是写入一个「换行符」
- 1
- 0
-
分享