Reader, Writer, InputStream e OutputStream oferecem funcionalidades para a leitura ou escrita de seqüências de elementos básicos (caracteres ou bytes).
Há, no entanto, categorias de aplicações que necessitam acesso a pontos arbitrários de um arquivo de dados. Por exemplo, a leitura de registros de um banco de dados não deve ser realizada seqüencialmente.
Para suportar essa funcionalidade, o pacote java.io define a classe RandomAccessFile. Um dos construtores dessa classe toma como argumentos duas strings, a primeira com o nome do arquivo e a segunda com o modo de operação ("r" para leitura apenas, "rw" para leitura e escrita).
Os métodos para a manipulação da posição corrente do ponteiro no arquivo são:
Além disso, o método long length() retorna o tamanho do arquivo em bytes.
Para a manipulação de conteúdo do arquivo, todos os métodos
especificados pelas interfaces
DataInput e
DataOutput (por
exemplo, readInt() e writeInt() para ler e escrever
valores do tipo primitivo int
) são implementados
por essa classe.