Java RandomAccessFile усекать с начала - PullRequest
5 голосов
/ 02 января 2012

Я знаю, как обрезать файл RandomAccess, чтобы байты в конце были удалены.

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

или

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

Но как обрезать файл RandomAccessFile таким образом, чтобы при запуске удалялись байты? Мне не нужно записывать содержимое этого файла в новый файл. Я погуглил и не смог найти ответ. Пожалуйста помоги. Заранее спасибо.

1 Ответ

6 голосов
/ 02 января 2012

Эта операция не поддерживается большинством файловых систем. Модель представляет собой последовательность байтов, начиная с определенного места на диске. Файлы имеют переменную длину и могут быть добавлены, поэтому отсечение относительно просто.

Таким образом, вам действительно нужно скопировать все байты в файле. Если вообще возможно избежать. Один из методов управления файлами очередей (например, журналами) состоит в том, чтобы иметь последовательность файлов, затем периодически начинать новый файл и сбрасывать его с конца.

...