You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:10:05