gpt4 book ai didi

java - 在Java中覆盖文本文件的一部分

转载 作者:行者123 更新时间:2023-12-01 12:27:26 25 4
gpt4 key购买 nike

我有一个 Java 程序,需要输出到文件。

这个输出文件有一个固定的结构,比如说一个标题、一个START行、我的输出、一个END行和一个< em>页脚。

每次运行程序时,我希望它在 START-END 部分之间写入输出。如果有一些文本,我想覆盖它。

现在,我正在逐行读取,直到检测到 START 行,然后写入输出。正如我之前所说,我的输出后面有一个“END”行。

我的疑问是如何为每次执行(新输出)覆盖 STARTEND (旧输出)之间的文本。

最佳答案

你熟悉RandomAccessFile吗?类(class)?我假设您要在 Header+START 和 END+Footer 标记之间写入可变长度的正文?这意味着您不能只覆盖正文部分并期望将尾部字节向前推进。

也许最简单的实现就是您开始实现它的方式。

  • 打开 RandomAccessFile 访问
  • 查找或跳至 START 索引末尾,记住索引
  • 从末尾向后读取字节,直到找到 END 索引的开头,向后读取时将字节放入 tailBuffer(由于反向读写而向后排序)
  • 寻找位置回到 STARTIndex+1 并将新的正文字节写入起始 block 的末尾
  • 调用 raf.setLength(startLen+bodylen+endLen) 相应地修剪或延长新文件长度
  • 将 tailBuffer 写入文件末尾,确保写入顺序正确

这可能是实现此目的的一种方法,或者只是将所有内容读取到 RAM 查找索引,用新内容覆盖文件。如果 RAM 不是问题的话,这很好。

关于java - 在Java中覆盖文本文件的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26205165/

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