0

我有一个包含很多零的文件,根据要求,文件中的零无效。我正在使用RandomAccessFile api 来定位文件中的数据。有没有办法可以使用相同的api从文件中删除所有零。

4

2 回答 2

4

您必须流式传输文件并将内容(减去零)写出到单独的临时文件中。然后您可以关闭并删除原始文件并将新文件重命名为旧文件名。这是此特定用例的最佳选择。

于 2014-03-24T10:53:25.223 回答
0

您可以使用 RandomAccessFile 读取文件的数据,当您到达需要更改数据的点时,您可以用相同的字节数覆盖现有的字节数。如果新值与旧值的长度完全相同。

使用 RandomAccessFile 时,它​​的困难和同样复杂,当大小为两个时,一个被更改的和新的值不同。它涉及大量的查找、读取和写入以将数据移回

尝试读取整个文件,更改您必须更改的位并写入一个新文件。您可以一次处理一行,或者将整个文件读入内存,修改它并再次将其全部写回。最好按以下方式执行编辑:

  1. 读取文件
  2. 写入临时文件[只是为了备份]
  3. 将原件重命名为备份件
  4. 处理临时文件。
  5. 如果成功,请删除备份。
于 2014-03-24T11:12:00.110 回答