Java RandomAccessFile从开头截断文件

6
我知道如何截断一个RandomAccess文件,以便删除末尾的字节。
raf.getChannel().truncate(file.length() - 4);

或者

raf.setLength(file.length() - 4);

但是如何以这样的方式截断RandomAccessFile,以便删除开头的字节?我不需要将此文件的内容写入新文件。我搜索了谷歌,但没有找到答案。请帮忙。提前致谢。

1个回答

8

大多数文件系统不支持这种操作。模型是从磁盘上的特定位置开始的一系列字节。文件长度可变且可以追加,因此截断相对容易。

所以您实际上需要复制文件中的所有字节。如果可能,请避免使用此方法。管理队列文件(例如日志)的一种技术是拥有一系列文件,然后定期启动一个新文件并将最后一个文件删除。


谢谢你提供的信息,@Tom。我已经使用你提供的信息继续进行了以下操作。fc.transferTo(seek, file.length() - seek, fcTmp); - retromuz
太糟糕了。运行在闪存介质上的文件系统由于擦除次数有限,对于“从开头截断”来说是理想的选择。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接