在Java中,可以从文件中删除特定字节吗?

时间:2018-09-02 08:56:48

标签: java

到目前为止,我设法对字节流进行了一些操作:读取原始文件,并在写入新文件的同时省略所需的字节(然后通过删除/重新命名文件以使仅剩一个文件)。

我想知道是否存在一种无需修改多个文件即可直接修改字节的方法。原因是因为当内存不足且文件太大时必须执行此操作,因此在修剪之前克隆文件可能不是最佳选择。

2 个答案:

答案 0 :(得分:0)

  

我想知道是否存在一种无需修改多个文件即可直接修改字节的方法。

没有安全的方法。

执行此操作的不安全方法涉及(例如)使用MappedByteBuffer映射文件,然后将字节改组。

但是问题是,如果在执行此操作时出现问题,则可能会导致文件损坏。

因此,如果用户要求在设备的内存太满而无法容纳文件的第二个副本时执行此操作,则最好的办法是告诉用户“首先删除一些文件”。

  

原因是因为当内存不足且文件太大时必须执行此操作,因此在修剪之前克隆文件可能不是最佳选择。

如果您主要担心存储设备上的“内存”,请参见上文。

如果您担心RAM,那么@RealSkeptic的观察是正确的。您不需要同时将整个文件保存在RAM中。您可以一次读取,修改和写入一个缓冲区。

答案 1 :(得分:0)

如果不将文件的其余部分放入内存,则无法删除文件中间的字节。但是如果可以帮助您,可以替换字节。