Metodo seek() e tamanho de RandomAccessFile

1 resposta
D

Falae galera, tava estudando o livro dos Deitel e fiquei com 2 duvidas:

1.Nao intendi direito pra q serve o metodo seek de RandomAccessFile. Sempre q vai gravar ou ler um registro ele usa o seek. Sei q é alguma coisa com a posição ne? Mas nos exemplo sao sempre usados assim:

arquivo.seek( (numeroDeUmaContaQualquer - 1) * UmaClasse.tamanho() );

2.Esse tamanho() é um metodo q devolve um numero(72) e q tem assim no livro assim no comentario:
Este metodo contem um valor fixo para o tamanho de registro de informação.
No livro diz q uma das maneiras de criar um arquivo de acesso aleatorio é fazer com q todos os registros tenham o mesmo tamanho fixo. Entao sempre q eu for gravar ou ler tenho q usar esse valor?

Alguem poderia me explicar essas duas duvidas. 8O 8O 8O

1 Resposta

A

[b] tem 3 paginas falando sobre o seek vamos lá …
primeira fala que o seek reposiciona o ponteiro de posição no arquivo (o nº sequencial que indica a posição do próximo byte a ser LIDO ou GRAVADO) em qualquer posição do arquivo.

segunda o método seek configura o ponteiro de posição para uma posição especifica no arquivo em relação ao inicio do arquivo.

bom no livro naum ta falando nada de 72… mas ta falando assim que :

o metodo seek para posicionar o ponteiro de posição no arquivo output na localização de byte calculada por (accountNumber - 1)*Record.size(). como o número de conta está entre 1 e 100, 1 é subtraído do número de conta ao calcular a localização de byte do registro. portanto, para o registro 1, o ponteiro de posiçãono arquivo é estabelecido como o byte 0 do arquivo. O resultado do calculo é implicitamente promovido de int para long porque o metodo seek exige um valor long como um argumento. quando o usuario fecha a janela, programa tenta adicionar o ultimo registro ao arquivo(se houver alguem esperando ser enviado para saida), fechar o arquivoe terminar o programa …

[/b]

As paginas que eu vi foram 769,779,782 do como programar terceira versão …

Angel

Criado 16 de junho de 2004
Ultima resposta 16 de jun. de 2004
Respostas 1
Participantes 2