Estrutura de Dados Arquivos Prof. Salustiano Rodrigues de Oliveira [email protected] www.profsalu.com.br Arquivo Texto (.txt) Os computadores utilizam os arquivos como estruturas de dados para armazenamento de longo prazo de grandes volumes de dados. Dados mantidos em arquivos são chamados de dados persistentes porque eles existem além da duração da execução do programa em dispositivos de armazenamento secundário como disquete, disco rígido, entre outros. 2 Arquivo Texto (.txt) Os arquivos no formato texto geralmente são encontrados com nomes com a extensão padrão .txt (abreviação de TEXT, ou texto em inglês). Arquivos texto podem ser facilmente lido ou abertos por qualquer programa que lê texto e, por essa razão, são considerados universais. 3 O pacote java.io Programas Java implementam o processamento de arquivos utilizando as classes do pacote java.io. A hierarquia de classes oferecida por este pacote, é relativamente grande e complexa, oferecendo mais de 50 classes distintas para o processamento de entrada e saída em arquivos baseados em bytes e caracteres e arquivos de acesso aleatório. 4 O pacote java.io Os arquivos são abertos criando-se objetos através de uma das classes de fluxo: • FileInputStream: para entrada baseada em bytes de um arquivo. • FileOutputStream: para saída baseada em bytes para um arquivo. • RandomAccessFile: para entrada e saída baseada em bytes de e para um arquivo. • FileReader: para entrada baseada em caracteres de um arquivo. • FileWriter: para saída baseada em caracteres para um arquivo. 5 O pacote java.io 6 Arquivo Texto (.txt) Nos arquivos de texto os dados são organizados como uma sequência de caracteres dividida em linhas terminadas por um caractere de fim de linha (\n). A interação de um programa com um dispositivo através de arquivos passa por três etapas: abertura ou criação de um arquivo, leitura ou gravação de dados e fechamento do arquivo. 7 A classe RandomAccessFile • A classe RandomAccessFile fornece uma forma muito conveniente de ler ou modificar o conteúdo de um arquivo. O que diferencia esta classe de outras classes de leitura e escrita do Java é que a classe RandomAccessFile permite o acesso à posições aleatórias de um arquivo. • Desta forma, um cursor de arquivo ou ponteiro nos permite navegar pelo conteúdo do arquivo e atingir as posições a serem lidas ou modificadas. 8 A classe Produto 9 Abrindo o Arquivo 1- Passa como parâmetro do constructor de RandomAcessFile o local do arquivo (caminho) e qual operação será utilizada (rw). – r (read) = Leitura – w (write) = Escrita 2- O método seek() procura pelo final do arquivo, passando como parâmetro o tamanho do arquivo em bytes com o método length(), o programa saberá aonde deverá começar a escrita. 3- Repare que o método abrirArquivo() possui o commando throws Exception (exceção). 10 Exceções • Uma exceção representa uma situação que normalmente não ocorre e representa algo de estranho ou inesperado no sistema. • O java possui diversas maneiras de tartar exceções. 11 Fechando um arquivo 3- o método close() fecha o arquivo; 12 Gravando dados em um arquivo 4- O método writeBytes() escreve no arquivo. OBS: Devemos indicar a quebra de linha quando necessário utilizando o comando “/n”. 13 Lendo dados de um arquivo 5-Passa como parâmetro do constructor de RandomAcessFile o local do arquivo (caminho) e qual operação será utilizada (r). – r (read) = Leitura 14 Lendo dados de um arquivo • 6- A variável linha do tipo String recebe o método readLine(), esse método lê a próxima linha do arquivo. • 7- Imprime o conteúdo da variável linha enquanto ela não for nula. • 8- Pula para a próxima linha do arquivo. 15