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

Java中FileWriter为何多数情况失效,偶尔又能正常工作?

问题原因分析

核心问题出在FileWriter的路径参数错误:

你创建的File对象明确指向d:\test_appendfile.txt,但初始化FileWriter时却用了file.getName()——这个方法只会返回文件名test_appendfile.txt,不带完整路径。这就导致FileWriter实际是在程序当前的工作目录下创建或写入文件,而不是你预期的D盘根目录。

至于偶尔能成功的情况,只有当程序运行时的当前工作目录恰好是d:\时,写入的文件才会和你查看的d:\test_appendfile.txt是同一个,这时候你才能看到内容;其余时候,内容都写到了当前工作目录下的同名文件里,你去D盘根目录自然找不到。

修复方案

把FileWriter的参数改成带完整路径的File对象,或者直接传入完整路径字符串即可:

// 方式1:直接使用已创建的File对象(推荐)
FileWriter fileWritter = new FileWriter(file, true);

// 方式2:直接传入完整路径字符串
FileWriter fileWritter = new FileWriter("d:\\test_appendfile.txt", true);

另外,建议改用try-with-resources语法自动管理流资源,避免手动调用close()可能带来的资源泄漏问题:

public static void main(String[] args) {
    String content = "hello";
    File file = new File("d:\\test_appendfile.txt");
    try {
        if (!file.exists()) {
            file.createNewFile();
        }
        // try-with-resources会自动关闭流
        try (FileWriter fileWritter = new FileWriter(file, true)) {
            fileWritter.write(content);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

内容的提问来源于stack exchange,提问作者user19470144

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:25:29