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

Java中如何在不删除现有内容的情况下覆盖文件指定内容?

问题解答

你的需求是可行的,但当前代码的写法做不到——因为FileWriter的默认构造(FileWriter("test.txt"))会直接截断文件,第二次打开时会把之前写的"123456789"清空,再写入"hello",所以最后文件只剩"hello"。

要实现「覆盖文件开头部分内容、保留后面原有内容」的效果,你得用支持随机定位写入的类,比如RandomAccessFile,这是最直接的方式:

示例代码

// 第一次写入初始内容
try (RandomAccessFile raf = new RandomAccessFile("test.txt", "rw")) {
    raf.write("123456789".getBytes());
}

// 第二次覆盖开头内容,保留后续部分
try (RandomAccessFile raf = new RandomAccessFile("test.txt", "rw")) {
    // 将文件指针移到文件开头
    raf.seek(0);
    // 写入"hello",覆盖前5个字节
    raf.write("hello".getBytes());
}

运行这段代码后,test.txt的内容就是你要的"hello6789"——"hello"替换了原来前5个字符,剩下的"6789"会保留下来。

注意事项

如果涉及中文、特殊字符这类非ASCII内容,要统一使用指定编码(比如UTF-8)写入,避免字节长度不匹配导致乱码,示例如下:

raf.write("hello".getBytes(StandardCharsets.UTF_8));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:46:06