可能重复:
Best Way to Write Bytes in the Middle of a File in Java
我有一个文件,我需要在其中写入字节。
我知道文件中的哪个位置需要插入特定字节。为了清楚起见,我需要在文件中间写入字节而不删除任何现有字节。然后整个操作应该增加文件的长度。
最好的方法是什么?
答案 0 :(得分:6)
执行此操作的唯一方法是移动当前阻碍的字节。根据您必须执行此操作的频率以及文件的大小,创建新文件,复制现有文件以及沿途插入新字节通常更好。
如果您需要不经常更新文件,或者它很小(最多可能100 kb),您可以使用RandomAccessFile:
setLength()
方法扩展文件,添加您要插入的length()
方法返回的字节数。byte[]
,它将保存从插入点到文件上一端的所有字节。seek()
以定位插入点readFully()
以填充您的临时数组seek()
定位插入点+要插入的字节数write()
来编写缓冲区seek()
以重新定位插入点如果在步骤#2中无法创建足够大的数组,则必须在具有较小缓冲区的循环中执行步骤3-6。我会使用至少64k缓冲区来提高效率。