2012-01-02 63 views
5

我知道如何截断RandomAccess文件,以便删除末尾的字节。Java RandomAccessFile从头开始截断

raf.getChannel().truncate(file.length() - 4); 

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

但是,如何在一开始字节这样的方式截断的RandomAccessFile被删除?我不需要将此文件的内容写入新文件。我搜索了一下,找不到答案。请帮忙。提前致谢。

回答

5

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

所以你实际上需要复制文件中的所有字节。如果可能,尽量避免。管理队列文件(例如日志)的一种技术是让一系列文件周期性地启动一个新文件,并将一个文件从尾端删除。

+0

感谢@Tom的领导。我使用你的信息继续下面的内容。 fc.transferTo(seek,file.length() - seek,fcTmp); – prageeth 2012-01-03 04:50:56

+0

太糟糕了。由于擦除周期的数量有限,运行在闪存介质上的文件系统对于“从头开始截断”是理想的。 – Michael 2013-04-01 03:43:52