在java中删除数据文件的一部分

Nir*_*han 0 java file-io

我有一个文件,我写了一些java对象.写完之后,有时我需要删除一些放在文件中ramndom位置的对象.有没有办法从文件中删除选定的对象而不替换整个文件?

谢谢.

Jon*_*eet 5

不,这基本上是大多数文件系统不支持的.(可能有一些使用特殊的数据结构使其便宜,但大多数都没有 - 并且标准API不支持这个想法.)

"删除"文件的一部分的最简单方法是将所需的位复制到新文件中.如果你只是删除末尾附近的位,你可能会避免再次复制它的开头,但这需要更复杂的代码.

在对象流的情况下,您可能最好只读取一个流中的对象,并将您仍想要的对象写入新流中.(显然你可以在之后重命名输出文件.)通过自己查看序列化格式,你可以避免重复反序列化/序列化所需的一些处理,但我会选择简单的路由开始.