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

Java中基于file.length()的文件追加功能失效,寻求技术指导

问题分析与修复方案

嘿,我一眼就瞅出问题所在了——你用的FileWriter默认是覆盖模式,这就是append功能失效的核心原因!

为什么原代码的append不工作?

当你调用new FileWriter(file)时,不管目标文件原本有没有内容,这个构造方法都会先把文件内容清空,然后再开始写入。所以哪怕你通过file.length()判断出文件不为空,准备执行append操作,此时原文件的内容已经被清空了,最终看起来append完全没生效。

如何修复?

你需要使用FileWriter的另一个重载构造方法,开启追加模式:

new FileWriter(file, true)

第二个参数传入true,就会告诉FileWriter:如果文件已存在,就直接在末尾追加内容,而不是覆盖原有内容。

另外还有个小细节要注意:你用(int)file.length()来判断是否为空,当文件大小超过int的最大值(2GB)时会出现溢出错误,直接用file.length() != 0更安全,因为file.length()返回的是long类型。

修正后的完整代码

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Filecreate { 
    public static void main(String args[]) throws IOException { 
        File file = new File("newFileCreated.txt"); 
        System.out.println("file path "+file.getAbsolutePath() +" file length - "+file.length()); 
        // 开启追加模式
        FileWriter myWriter = new FileWriter(file, true); 
        if(file.length() != 0){ 
            myWriter.append("appended text\n"); 
        }else{ 
            myWriter.write("Files in Java might be tricky, but it is fun enough!"); 
        } 
        myWriter.close(); 
        System.out.println("file length after writing to file "+file.length()); 
    } 
}

测试验证

  • 第一次运行:文件为空,会执行write方法写入初始内容;
  • 第二次及之后运行:文件已有内容,会执行append方法在末尾追加新文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:02:35