我想创建一个用于编辑文本文件的简单程序(用Java),尤其是一个可以在文本文件中的任意位置插入任意文本的程序。此功能是我当前正在编写的一个较大程序的一部分。
阅读有关java.util.RandomAccessFile的描述,似乎在文件中间执行的任何写操作实际上都将覆盖现有内容。这是我要避免的副作用(如果可能)。
有没有简单的方法可以做到这一点?
提前致谢。
好的,这个问题已经很老了,但是FileChannels自Java 1.4起就存在了,我不知道为什么在替换或插入文件内容的问题上没有提到它们。FileChannel很快,请使用它们。
这是一个示例(忽略异常和其他内容):
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();
}
问题内容: 我想在文本文件中的某些位置插入数据,而实际上不覆盖现有数据。我尝试了RandomAccessFile ....但是也覆盖了它....有没有办法在不覆盖数据的情况下插入数据?-提前致谢 问题答案: 您必须阅读并重写文件。在此操作过程中,您必须找到要放置文本并进行书写的位置。
我写了一个函数,允许我从剪贴板中获取四列数据,拆分它,添加一列额外的列,重新组合它,并将其导出为文本文件。 我有两个问题:- 是否可以创建一个文件,其中包含我使用此函数创建的表,以便将该表粘贴到某些文本的中间? 邪恶的笑(Evil Grin的缩写) 其次,我试图修改函数,使其将一个文件名作为变量;即< code>xyztoinp 等等……但这并没有产生带有新文件名的输出;有人知道这是怎么做到的吗?
问题内容: 我正在尝试将文档插入Node.js中的MongoDB中。我已经从数据库中成功读取了文件,并通过命令行界面添加了文档。但是,我无法从JavaScript插入文档。如果这样做,我会收到一个错误: 错误:没有提供的回调无法使用writeConcern 这是我的代码: 我无法终生弄清楚为什么会出现此错误。 我做错了什么,我应该怎么做呢? 问题答案: 您需要为调用提供回调函数,以便该方法可以将插
我在PostgreSql中创建了一个表books。 我的Json: 如何通过java代码将json插入Postgres?
我正在尝试如何将文本添加到已经有文本节点的p标记或h1标记中。 例如: null null 这段代码给出了一个错误:appendChild不是函数。大多数帮助页面首先创建p标记,然后追加文本。 向现有文本元素添加文本的正确方法是什么? ps:我以前使用过innerHTML来实现这一点,但是出于学习的目的,我想在这里避免使用它。
问题内容: 我正在尝试使用H2的runscript运行sql脚本。 该表之一包含一个长文本类型,该类型存储了一个xml文档(来自SAP数据库) 因此,Insert语句包含XML的长文本(大约200行XML),虽然很难看,但仍然可以使用。 在SQL解析期间,H2因ArrayOutOfBoundException而崩溃。 插入语句接受的长度是否有限制? 在nsert中,我使用刻度(如mysql中所使用