Buscar

Aula4-Arquivos-Acesso Aleatorio


Continue navegando


Prévia do material em texto

Arquivos: Acesso Aleatório 
 
 
Prof: Ekler Paulino de Mattos 
ekler.mattos@gmail.com 
CPCX/UFMS 
Acesso Aleatório 
 
 
 
 
• Até agora foram apresentados leituras de arquivos sequencial 
que não são apropriados para aplicativos de acesso instantâneo, 
nos quais as informações devem ser localizadas imediatamente. 
 
• Exemplos de aplicações de acesso instantâneo: 
– Sistemas de reservas de passagens aéreas, Sistemas de 
Internet Banking, Caixas automáticos entre outros. 
 
 
• Tipos de sistemas de processamento de transação que requerem 
acesso que requerem acesso rápido a dados específicos. 
 
Acesso Aleatório / Definição 
 
 
 
• Definição: 
 Conhecidos também como arquivos de acesso direto, permite 
acessar registros individuais de um arquivo de acesso aleatório 
diretamente sem pesquisar outros registros. 
 
• Características: 
– Necessidade de especificar um formato para o arquivo. 
– Existem diversas formas de especificar um formato, a forma mais 
simples é definir um comprimento fixo para todos os registros 
contidos no arquivo. 
– Registros de largura fixa facilita para um programa calcular a 
localização exata de qualquer registro em relação ao início do 
arquivo. 
 
Acesso Aleatório / Definição 
 
 
 
• O arquivo de acesso aleatório é como um trem com vagões 
vazios e cheios… 
– Pode inserir dados sem destruir os outros dados nesse arquivo. 
– Pode atualizar ou excluir dados previamente armazenados sem 
regravar o arquivo inteiro. 
Figura 1 – Visualização do Java de um arquivo de acesso aleatório. 
Acesso Aleatório / Java 
 
 
 
• RandomAcessFile: útil para aplicativos de acesso direto. 
– Cada solicitação de entrada/saída seria direcionada para qualquer 
parte do arquivo. 
 
– Fornecem um tipo de acesso rápido a itens de dados a grandes 
arquivos. 
 
– Tem as capacidades das classes: FileInputStream, 
FileOutputStream. 
 
– Tem as capacidades descritas pelas interfaces DataInput e 
DataOutput: Fornecem métodos para leitura e gravação de valores 
de tipos primitivos (int, char, float, double, long, void), arrays 
bytes e strings. 
 
Acesso Aleatório / Java 
 
 
 
• Tipos primitivos: 
– Surgiu para uniformizar no tratamento dos tipos na linguagem Java, 
a linguagem. 
– Também define as classes correspondentes aos tipos primitivos. 
– são semelhantes aos do C e do C++ (embora com algumas 
restrições, como, por exemplo, as dimensões) permitem tratar 
eficientemente entidades como inteiros ou caracteres. 
– A partir da versão 1.5, permite a auto-conversão de tipos primitivos 
para essas classes. 
– As classes correspondentes aos tipos primitivos são 
designadas wrappers ("envoltórios") e o processo de conversão 
implícita é designado por autoboxing ("auto-empacotamento"). 
Acesso Aleatório / Java 
 
 
 
• Tabela de tipos primitivos: 
Acesso Aleatório / Java 
 
 
 
• A Classe RandomAccessFile com um arquivo, ele lê ou grava os 
dados a partir do local no arquivo especificado pelo ponteiro de 
posição no arquivo (número de bytes do próximo byte no arquivo 
a ser lido ou gravado) e manipula todos os dados como tipos 
primitivos. 
 
• Quando se grava um valor int, quatro bytes são enviados para o 
arquivo de saída. 
 
• Quando se lê um valor double, oito bytes são recebidos do 
arquivo de entrada. 
 
• O tamanho dos tipos é garantido porque o Java tem 
representações e tamanhos fixos para todos os tipos primitivos, 
independentemente da plataforma de computação. 
 
 
 
Exemplo 1 - Gravação 
 
 
 
Exemplo 1 - Leitura 
 
 
 
• Gravação de um registro que contenha String e Integer: Nome e 
Idade respectivamente. 
Exemplo 2 - Gravação 
 
 
 
Exemplo 2 - Gravação 
 
 
 
• Linha 14 – posiciona o ponteiro na última posição do arquivo. 
• Linha 16 – invoca a rotina de gravação de nome no arquivo. 
• Linha 17 – grava um valor de tipo Integer. 
 
Exemplo 2 - Gravação 
 
 
 
• Para navegar no arquivo, é utilizado o método seek é usado para 
 posicionar a posição exata no arquivo em que um registro das 
 informações é armazenado. 
 
 
 
• O ponteiro seek aponta para o início do arquivo. 
 
 
 
• O ponteiro seek inicializa com a posição 0. 
Exemplo 2 - Navegação 
 
 
 
Exemplo 2 - Navegação 
 
 
 
Exemplo 2 - Navegação 
 
 
 
• Linha 13 – posiciona o ponteiro na posição inicial do registro. 
• Linha 15 – cria um vetor de bytes para armazenar o conteúdo do 
regitro, neste caso seria o nome. 
• Linha 18 – lê os dados do arquivo armazenando o seu conteúdo 
no vetor de bytes. 
• Linha 21 – lê o valor inteiro sendo armazenado. 
 
 
Exemplo 2 - Navegação 
 
 
 
• Crie um programa de arquivo de acesso aleatório que atenda as 
seguintes especificações do diagrama de classe abaixo: 
– Cadastrar cliente; 
– Atualizar cliente; 
– Buscar cliente; 
– Remover cliente; 
 
 
 
 
 
 
 
 
 
 
 
Exercícios – EC1 
– Data de entrega: 06/09/2011