我想将文本文件中的字符串写入文件的底部。然后,如果我在文本文件中搜索某个字符串并找到它,我想用另一个替换该行。
我在想这个:在textfile中计算行并添加+1,然后将我想要写入的字符串写入该索引。但是甚至可以在文本文件中写入某个亚麻布吗?
如何将某一行更新为另一个字符串?
谢谢!
答案 0 :(得分:4)
你不想这样做:它是灾难的秘诀。如果在原始文件修改期间,您无法写入,则原始文件将被破坏。
使用双写协议,将修改后的文件写入另一个文件,只有当写入超过时才使用,将该文件重命名为原始文件。
如果您的文件不是太大,对于某些“big”的定义,我建议为目标文件创建List<String>
:逐行读取原始文件,添加到该列表;一旦列表处理完成(你的问题不清楚应该发生什么),将每个String
写入另一个文件,刷新并关闭,如果成功,则重命名为原始文件。
答案 1 :(得分:0)
如果您想追加字符串,可以将FileOutputStream does have an alternate constructor设置为true,以便打开以进行追加。
如果您希望将字符串替换为文件而不复制,那么您最好的选择是依赖RandomAccessFile。但是,如果线长变化,则这是不可靠的。对于定长记录,这应该是这样的:
你也可以'截断'(通过setLength),所以如果你需要摆脱一个尾随块,你可以放弃它。
第三种解决方案是依靠mmap。这需要Memory-Mapped Bytebuffer整个文件。我不是在考虑解决方案的整体可行性(它在普通的C中工作),但如果你同时考虑Java平台+操作系统,它实际上“看起来”更正确