java 追加写入和覆盖写入的区别是什么?

4 阅读1分钟

一句话讲清楚: 追加写入:在文件后面接着写,原来内容不动覆盖写入:先清空文件,再写新内容,原来内容全没了


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​