RandomAccessFile raf = new RandomAccessFile(f, ???r???);for (???) { raf.seek(pos); byte b = raf.readByte();}
Despite its name, the java.io.RandomAccessFile class is not very convenient for accessing files in a random-access manner, such as: seek, read, seek, read. Each of these directly issue the corresponding system calls/ioctl on the file descriptor. You can do that using MappedByteBuffer, like this:
FileInputStream in = new FileInputStream(f);MappedByteBuffer map = in.getChannel().map(MapMode.READ_ONLY, 0, f.length());for (???) {byte b = map.get(pos);}