可能重复:
在 Java 文件中间写入字节的最佳方法
我有一个需要写入字节的文件。
我知道我需要在文件中的哪个位置插入特定字节。为了清楚起见,我需要在文件中间写入字节而不擦除任何现有字节。然后整个操作应该增加文件的长度。
最好的方法是什么?
可能重复:
在 Java 文件中间写入字节的最佳方法
我有一个需要写入字节的文件。
我知道我需要在文件中的哪个位置插入特定字节。为了清楚起见,我需要在文件中间写入字节而不擦除任何现有字节。然后整个操作应该增加文件的长度。
最好的方法是什么?
这样做的唯一方法是移动当前在路上的字节。根据您必须执行此操作的频率以及文件的大小,创建一个新文件、复制现有文件并在此过程中插入新字节通常是一个更好的主意。
如果您需要不经常更新文件,或者文件很小(最多可能 100 kb),您可以使用RandomAccessFile:
setLength()
将要插入的字节数添加到该length()
方法返回的任何内容中。byte[]
保存从插入点到文件前一个结尾的所有字节。seek()
在插入点调用位置readFully()
以填充您的临时数组seek()
位置 + 要插入的字节数write()
以在此时写入您的缓冲区seek()
以在插入点重新定位如果在第 2 步中无法创建足够大的数组,则必须在循环中使用较小的缓冲区执行第 3-6 步。为了提高效率,我至少会使用 64k 缓冲区。