我有一个文件,里面写了一些java对象。写入后,有时我需要删除放置在文件中随机位置的一些对象。有没有办法从文件中删除选定的对象而不替换整个文件?
谢谢。
最佳答案
不,这从根本上来说是大多数文件系统不支持的。 (可能有一些具有特殊的数据结构以使其便宜,但大多数没有 - 并且标准 API 不支持这个想法。)
“删除”文件部分的最简单方法是将所需的部分复制到新文件中。如果您仅删除接近末尾的位,则可能会避免再次复制它的开头,但这将需要更复杂的代码。
对于对象流,您可能最好只从一个流中读取对象,然后将您仍然需要的对象写入新的流中。 (显然,您可以稍后重命名输出文件。)通过自己查看序列化格式,您可能可以避免重复反序列化/序列化所需的一些处理,但我会选择简单的路线开始。
关于java - 在java中删除数据文件的部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3174201/