9

可能重复:
在 Java 文件中间写入字节的最佳方法

我有一个需要写入字节的文件。

我知道我需要在文件中的哪个位置插入特定字节。为了清楚起见,我需要在文件中间写入字节而不擦除任何现有字节。然后整个操作应该增加文件的长度。

最好的方法是什么?

4

1 回答 1

7

这样做的唯一方法是移动当前在路上的字节。根据您必须执行此操作的频率以及文件的大小,创建一个新文件、复制现有文件并在此过程中插入新字节通常是一个更好的主意。

如果您需要不经常更新文件,或者文件很小(最多可能 100 kb),您可以使用RandomAccessFile

  1. 使用该方法扩展文件,setLength()将要插入的字节数添加到该length()方法返回的任何内容中。
  2. 如果您有足够的内存,请创建一个byte[]保存从插入点到文件前一个结尾的所有字节。
  3. seek()在插入点调用位置
  4. 调用readFully()以填充您的临时数组
  5. 在插入点调用seek()位置 + 要插入的字节数
  6. 调用write()以在此时写入您的缓冲区
  7. 调用seek()以在插入点重新定位
  8. 调用 `write() 写入新字节

如果在第 2 步中无法创建足够大的数组,则必须在循环中使用较小的缓冲区执行第 3-6 步。为了提高效率,我至少会使用 64k 缓冲区。

于 2012-10-01T16:36:39.260 回答