当前位置: 首页 > 面试题库 >

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

夹谷和裕
2023-03-14
问题内容

我想创建一个用于编辑文本文件的简单程序(用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中所使用