2012-01-02 64 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