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

Java 将字节写入文件而不删除现有字节,java,java-io,Java,Java Io,可能重复: 我有一个需要写入字节的文件 我知道需要在文件中的哪个位置插入特定字节。为了弄清楚,我需要在文件中间写入字节,而不删除任何现有的字节。然后,整个操作将增加文件的长度 这样做的最佳方法是什么?唯一的方法是移动当前挡在路上的字节。根据您执行此操作的频率以及文件的大小,通常最好创建一个新文件,复制现有文件并在此过程中插入新字节 如果您不经常需要更新文件,或者文件很小(可能高达100 kb),可以使用: 使用setLength()方法扩展文件,将要插入的字节数添加到length()方法返回的

可能重复:

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

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


这样做的最佳方法是什么?

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

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

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

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

    已经尝试过了,不幸的是我的实现没有添加字节,而是删除了现有的字节,实际插入的技巧是什么?@gtgaxiola:这不起作用,因为它会覆盖现有的ByTest。check Jon Skeet的应答文件不支持插入字节。您只能将现有的复制到文件中的后面部分。