将字节写入文件而不删除现有字节

时间:2012-10-01 16:21:02

标签: java java-io

  

可能重复:
  Best Way to Write Bytes in the Middle of a File in Java

我有一个文件,我需要在其中写入字节。

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

最好的方法是什么?

1 个答案:

答案 0 :(得分:6)

执行此操作的唯一方法是移动当前阻碍的字节。根据您必须执行此操作的频率以及文件的大小,创建新文件,复制现有文件以及沿途插入新字节通常更好。

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

  1. 使用setLength()方法扩展文件,添加您要插入的length()方法返回的字节数。
  2. 如果您有足够的内存,请创建一个byte[],它将保存从插入点到文件上一端的所有字节。
  3. 致电seek()以定位插入点
  4. 致电readFully()以填充您的临时数组
  5. 调用seek()定位插入点+要插入的字节数
  6. 在此时调用write()来编写缓冲区
  7. 致电seek()以重新定位插入点
  8. 调用`write()写新字节
  9. 如果在步骤#2中无法创建足够大的数组,则必须在具有较小缓冲区的循环中执行步骤3-6。我会使用至少64k缓冲区来提高效率。