Como ler um arquivo de um determinado deslocamento em Java?

Ei eu estou tentando abrir um arquivo e ler apenas de um deslocamento por um determinado período! Eu li este tópico: Como ler uma linha específica usando o número de linha específico de um arquivo em Java? lá dizia que não é possível ler uma certa linha sem ler as linhas antes, mas estou pensando em bytes!

FileReader location = new FileReader(file); BufferedReader inputFile = new BufferedReader(location); // Read from bytes 1000 to 2000 // Something like this inputFile.read(1000,2000); 

É possível ler certos bytes de um offset conhecido?

RandomAccessFile expõe uma function:

 seek(long pos) Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs. 

FileInputStream.getChannel().position(123)

Esta é outra possibilidade além do RandomAccessFile :

 File f = File.createTempFile("aaa", null); byte[] out = new byte[]{0, 1, 2}; FileOutputStream o = new FileOutputStream(f); o.write(out); o.close(); FileInputStream i = new FileInputStream(f); i.getChannel().position(1); assert i.read() == out[1]; i.close(); f.delete(); 

Isso deve ser OK já que os documentos para FileInputStream#getChannel dizem que:

Alterar a posição do canal, explicitamente ou por leitura, alterará a posição do arquivo desse stream.

Eu não sei como este método se compara ao RandomAccessFile no entanto.