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

向同一文件追加数据时遇报错,附代码求技术解决方案

问题排查与解决方案

从你给出的代码片段来看,无法向文件追加数据的核心原因是FileWriter默认使用覆盖模式,而非追加模式!

问题根源

你当前初始化BufferedWriter的代码是:

BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\dataoutput.txt"))

FileWriter的无参构造方法会直接清空目标文件并从头写入,如果你想在现有文件末尾追加内容,必须传入第二个布尔参数并设为true,以此开启追加模式。

修正后的完整代码

我帮你补全了代码逻辑(假设URLShortener类有shorten()方法处理每行链接),同时修复了追加问题:

public static void main(String args[]) throws IOException {
    URLShortener u = new URLShortener(100, "https://is.gd/");
    // 开启FileWriter的追加模式:第二个参数设为true
    try (BufferedReader br = new BufferedReader(
            new InputStreamReader(new FileInputStream(new File("C:\\data.txt"))));
         BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\dataoutput.txt", true))) {
        String line;
        while ((line = br.readLine()) != null) {
            // 调用URLShortener的方法生成短链接
            String shortenedUrl = u.shorten(line);
            // 写入短链接并换行,保证每条数据独立一行
            bw.write(shortenedUrl);
            bw.newLine();
            // 可选:手动刷新缓冲区,避免大量数据滞留内存
            bw.flush();
        }
    }
}

额外避坑提示

  • 权限问题:Windows系统下C盘根目录可能存在读写权限限制,建议把文件路径换成用户目录(比如"C:\\Users\\你的用户名\\dataoutput.txt"),避免因权限不足抛出异常
  • 异常细化:直接抛出IOException不利于定位具体问题,建议捕获FileNotFoundException(文件不存在)、SecurityException(权限不足)等细分异常,方便快速排查
  • 资源管理:你用try-with-resources的写法非常好,它会自动关闭流并刷新缓冲区,避免资源泄漏问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:25:44