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

问题描述 投票:0回答:2

到目前为止,我设法用Byte Stream做了一些事情:读取原始文件,并在省略所需字节的同时写入新文件(然后通过删除/重命名文件完成,以便只剩下一个)。

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

java
2个回答
0
投票

我想知道是否有一种方法可以直接修改字节而无需操作多个文件。

没有安全的方法来做到这一点。

这种不安全的方法涉及(例如)使用MappedByteBuffer映射文件,并对周围的字节进行混洗。

但问题是,如果在执行此操作时出现问题,您最终可能会遇到损坏的文件。

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.