I am writing some data access test implementation and I need random access to file content. Here’s the code:
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rwd");
final byte b[] = IOUtils.toByteArray(source);
randomAccessFile.write(b, (int) offset, size);
where offset has type long.
Why doesn’t RandomAccessFile provide method:
public void write(byte b[], long off, int len)
?
How to override this issue?
I think you are looking for the
seekmethod.The offset in
writeis an offset into the array. Arrays haveintoffsets. There have been proposals for "long arrays", but were these implemented, you’d still need an overload.Mapped files in NIO have a problem in that the equivalent
MappedByteBuffer.positionfor some reason only usesint. See CR 6347833 (9 votes).