gpt4 book ai didi

java - 通过 Java 将文本插入现有文件

转载 作者:IT老高 更新时间:2023-10-28 20:27:50 24 4
gpt4 key购买 nike

我想创建一个简单的程序(用 Java 编写)来编辑文本文件——尤其是在文本文件中的随机位置插入任意文本片段的程序。这个功能是我目前正在编写的一个更大程序的一部分。

阅读有关 java.util.RandomAccessFile 的描述,似乎在文件中间执行的任何写入操作实际上都会覆盖现有内容。这是我想避免的副作用(如果可能的话)。

有没有简单的方法来实现这一点?

提前致谢。

最佳答案

好的,这个问题已经很老了,但是 FileChannels 从 Java 1.4 开始就存在了,我不知道为什么在处理在文件中替换或插入内容的问题时没有提到它们。 FileChannels速度很快,使用它们。

这是一个例子(忽略异常和其他一些东西):

public void insert(String filename, long offset, byte[] content) {
RandomAccessFile r = new RandomAccessFile(new File(filename), "rw");
RandomAccessFile rtemp = new RandomAccessFile(new File(filename + "~"), "rw");
long fileSize = r.length();
FileChannel sourceChannel = r.getChannel();
FileChannel targetChannel = rtemp.getChannel();
sourceChannel.transferTo(offset, (fileSize - offset), targetChannel);
sourceChannel.truncate(offset);
r.seek(offset);
r.write(content);
long newOffset = r.getFilePointer();
targetChannel.position(0L);
sourceChannel.transferFrom(targetChannel, newOffset, (fileSize - offset));
sourceChannel.close();
targetChannel.close();
}

关于java - 通过 Java 将文本插入现有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/289965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com