一句话讲清楚: 追加写入:在文件后面接着写,原来内容不动覆盖写入:先清空文件,再写新内容,原来内容全没了
1. 核心区别
覆盖写入(默认)
- 构造流时不传
true,或传 false - 打开文件时先清空原有内容
- 再把新内容写进去
- 适合:每次重新生成文件、导出全新数据
// 覆盖模式(默认)
FileOutputStream fos = new FileOutputStream("a.txt");
FileWriter fw = new FileWriter("a.txt");
追加写入
- 构造流时第二个参数传
true - 原有内容保留不动
- 新内容写在文件末尾
- 适合:写日志、记录、逐条保存数据
// 追加模式
FileOutputStream fos = new FileOutputStream("a.txt", true);
FileWriter fw = new FileWriter("a.txt", true);
2. 直观例子
假设文件原来内容是:
Hello
① 覆盖写入
写入:Java 结果:
Java
原来的 Hello 被清空了。
② 追加写入
写入:Java 结果:
Hello
Java
原来内容还在,新内容加在后面。
3. 总结记忆
- 覆盖:从头开始,旧的没了
- 追加:从尾巴开始,旧的还在
- 开关就是:构造方法第二个参数
true / false