Organização Relativa com RandomAccesFile

Olá pessoal.

Sou novo aqui no forum e no desenvolvimento em java.

Seguinte. To precisando implementar uma Organização Relativa em arquivos binários usando a classe RandomAccessFile para um projeto de Estrutura de Dados. Nunca usei essa classe e to com muita dificuldade na implementação.

Vou usar como exemplo uma classe aluno que tem os seguintes atributos:

mat int 4 PK
nome String 40
flagAtivo char 1

Nesse caso cada registro terá 45 caracteres. O atributo mat seria usado para a organização relativa, onde, gráva-se os registros relativamente às suas chaves. Ex:

Mat = 1, grava na posição 1 à 45;
Mat = 2, grava na posição 46 à 90;
Mat = 5, grava na posição 181 à 225;

Meu problema é o seguinte:

  • Como tratar os dados e gravar cada registro com 45 posições no arquivo?
  • Como gravar/consultar os registros relativamente?

Quem poder me ajudar eu agradeço.

[]'s


Ivan Sérgio.

Fiz algo muito semelhante para o projeto de certificação SCJD.

Você pode usar o metodo seek(), que recebe a posição para a qual você vai enviar o ponteiro do arquivo, para mover para um registro especifico você pode fazer:

arquivo.seek(registro*45);

Só que para pular registro, você terá que inserir registros brancos neles, nesse caso aí você vai escrever o registro 1 na posição 0, o registro 2 na posição 2, um registro vazio nas posições 3 e 4, e o registro 5 na posição 5.

jairelton obrigado por ter respondido.

Meu principal problema é como gravar os resgistros com 45 caracteres. Ex.:

|***1NOME DO ALUNO****S|2NOME DO ALUNO2S||*********************************************|
|**********************||5NOME DO ALUNO5S|

Onde os * seriam caracteres em branco. Espero ter sido claro na explicação.

Desde já agradeço.

[]'s


Ivan Sérgio.