我想写一个文件而不覆盖任何东西。它是一个包含记录的文本文件。当我删除一个特定的记录时,我实际上并没有从文件中删除它,我只是将信息放在标题中说它被删除了。我怎么能这样做?
答案 0 :(得分:2)
您无法附加到文件的BEGINNING而无需从头开始重写。它必须走到最后(这是有道理的,因为这就是“追加”这个词的意思)。
如果您希望能够将记录标记为已删除而不为该标记保留空间,则需要将信息放在最后,或者重写所有内容。
更明智的方法确实是预先保留空间 - 例如在每条记录中放置一个“已删除”字段。
答案 1 :(得分:0)
一种可能的解决方案是,如果某些字符通常不在记录中(似乎每个文件都是记录 - 如果我错了请纠正我):
将这些字符与一些单词标记结合使用(例如,#deleted#,或#000,如果#是记录中通常不允许的字符)。
然后只是覆盖记录开头的任何内容;它被删除了,所以你覆盖它的一部分并不重要。
另一方面,如果您预计需要恢复“已删除”文件,这可能不是一个好主意。
顺便说一下 - 如果你确实追加(在文件末尾)删除的标志,请注意,如果你知道文件大小,那么检查它是非常容易的 - 只需查看文件的末尾。