用Java覆盖部分文本文件

时间:2014-10-05 17:17:27

标签: java file

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

此输出文件具有固定的结构,例如标题 START 行,我的输出, END 行和< EM>页脚

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

到现在为止,我正在逐行阅读,直到我检测到 START 行,然后我写出输出。正如我之前所说,输出后有一条“END”线。

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

1 个答案:

答案 0 :(得分:1)

你熟悉RandomAccessFile课吗?我假设你在Header + START和END + Footer标记之间写了一个可变长度的正文?这意味着您不能只覆盖正文部分并期望拖尾字节。

也许最容易实现的是你如何开始实现它。

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

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

相关问题