Java文件处理:重新运行程序时如何保留并查看原有文件数据?
问题解答
这是Java的特性吗?
不是,这是FileWriter默认写入模式导致的结果。当你使用new FileWriter("username.txt")创建实例时,Java会默认以覆盖模式打开目标文件:若文件已存在,就清空原有内容再写入新数据;若文件不存在则创建新文件。这是IO操作的常规设计,目的是给开发者提供写入模式的选择空间,并非Java强制的特性。
如何保留并追加之前的文件内容?
只需使用FileWriter的重载构造方法,传入第二个参数true开启追加模式即可:
修改后的代码
import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class library { public static void main(String[] args) { Scanner myObj = new Scanner(System.in); System.out.println("Enter name"); String name = myObj.nextLine(); // 开启追加模式:第二个参数传true try (FileWriter fileWriter = new FileWriter("username.txt", true)) { // 加入换行符,让每条数据单独一行,提升可读性 fileWriter.write(name + System.lineSeparator()); } catch(IOException exception ) { System.out.println("sorry could not be executed"); } } }
额外优化说明
- 使用
try-with-resources语法(Java 7及以上支持),无需手动调用close(),系统会自动关闭流,避免资源泄漏。 - 添加
System.lineSeparator()适配不同操作系统的换行规则,让文件内容格式更统一。
关于恢复已覆盖的数据
如果数据已经被覆盖且没有提前备份,Java本身没有内置的恢复功能。这种情况下只能依赖系统级的文件恢复工具(比如Windows的文件历史记录、Mac的Time Machine),或者第三方数据恢复软件,但恢复成功率无法保证。建议开发时先确认写入模式,避免误覆盖操作。
内容的提问来源于stack exchange,提问作者Tanya shankar
相关产品推荐
相关产品推荐

