Question

I know how to truncate a RandomAccess file so that bytes at the end are removed.

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

or

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

But how to truncate a RandomAccessFile in such a way that bytes at the start is removed? I don't need to write contents of this file to a new file. I googled and could not find an answer. Please help. Thanks in advance.

Was it helpful?

Solution

It's not an operation most file systems support. The model is a sequence of bytes starting at a particular place on the disc. Files are variable length and can be appended, and so truncation is relatively easy from there.

So you will actually need to copy all the bytes in the file. If at all possible avoid. One technique to manage queue files (such as logs), is to have a sequence of files then start a new file periodically and drop one off the end.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top