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