将字符串写入文本文件的最后一行

时间:2013-01-01 11:23:50

标签: java

我想将文本文件中的字符串写入文件的底部。然后,如果我在文本文件中搜索某个字符串并找到它,我想用另一个替换该行。

我在想这个:在textfile中计算行并添加+1,然后将我想要写入的字符串写入该索引。但是甚至可以在文本文件中写入某个亚麻布吗?

如何将某一行更新为另一个字符串?

谢谢!

2 个答案:

答案 0 :(得分:4)

你不想这样做:它是灾难的秘诀。如果在原始文件修改期间,您无法写入,则原始文件将被破坏。

使用双写协议,将修改后的文件写入另一个文件,只有当写入超过时才使用,将该文件重命名为原始文件。

如果您的文件不是太大,对于某些“big”的定义,我建议为目标文件创建List<String>:逐行读取原始文件,添加到该列表;一旦列表处理完成(你的问题不清楚应该发生什么),将每个String写入另一个文件,刷新并关闭,如果成功,则重命名为原始文件。

答案 1 :(得分:0)

  1. 如果您想追加字符串,可以将FileOutputStream does have an alternate constructor设置为true,以便打开以进行追加。

  2. 如果您希望将字符串替换为文件而不复制,那么您最好的选择是依赖RandomAccessFile。但是,如果线长变化,则这是不可靠的。对于定长记录,这应该是这样的:

    • 移至偏移
  3. 你也可以'截断'(通过setLength),所以如果你需要摆脱一个尾随块,你可以放弃它。

    第三种解决方案是依靠mmap。这需要Memory-Mapped Bytebuffer整个文件。我不是在考虑解决方案的整体可行性(它在普通的C中工作),但如果你同时考虑Java平台+操作系统,它实际上“看起来”更正确