Bacharelado em Ciência e Tecnologia BC-0505 - Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel [email protected] Conceitos Arquivos permitem armazenar dados de maneira permanente Um arquivo é uma coleção de bytes referenciados por um nome único Existem 4 operações básicas com arquivo 1. Abrir / Criar o Arquivo 2. Ler dados do Arquivo ou Gravar dados no Arquivo 3. Fechar o Arquivo Gravação Algoritmo para gravação de dados de arquivos abra o destino (através de um stream) enquanto (houver informação a gravar) faça grave a informação fim-enquanto feche o destino Leitura Algoritmo para leitura de dados de arquivos Abra uma origem de dados (stream) enquanto (houver informação a ser lida) faça leia a informação do arquivo ... fim-enquanto feche a origem de dados Operações com Arquivos Fluxo de Informação - Leitura Para ler informações de um arquivo um programa abre um fluxo de dados (stream) entre o “programa” e a “Origem” (Hd, pen-drive, etc) Operações com Arquivos Fluxo de Informação - gravação Para gravar informações num arquivo um programa abre um fluxo de dados (stream) entre o “programa” e o “destino” (Hd, pen-drive, etc) Arquivos Em Java Operações com Arquivos O pacote java.io contém uma coleção de classes que permite a gravação e leitura em arquivos Para usar estas classes, um programa precisa importar o pacote java.io Operações com Arquivos Algumas classes do pacote java.io Tipo de I/O Arquivo Buffer Classe Descrição *FileReader *FileWriter Utilizadas para escrever ou ler em arquivos *BufferedReader *BufferedWriter Encapsula os dados em um buffer, reduzindo o acesso aos dados originais (disco) Operações com Arquivos Vamos trabalhar com a manipulação de dados em arquivos de forma Bufferizada: • BufferedReader: para leitura • BufferedWriter: para gravação Operações com Arquivos Buffer é uma área da memória reservada para armazenar dados Mais especificamente, para dados que serão transmitidos entre dispositivos Os dados são armazenados em buffers de maneira temporária Buffers têm uma estrutura de dados que oferece maior segurança aos dados, encapsulando as informações Exemplo Gravação com Buffer import java.io.*; public class GravarEmArquivo { public static void main (String [ ] args) { BufferedWriter conexao; // declara variável para “gravar” try { // a instrução abaixo ABRE o arquivo teste.txt para gravação usando buffer conexao = new BufferedWriter( new FileWriter ( “teste.txt” ) ); // as 2 linhas abaixo gravam os textos entre “aspas” no arquivo teste.txt conexao.write( “Isto é um teste de gravação \n" ); conexao.write( “no arquivo teste.txt \n" ); conexao.close( ); } catch (Exception e) // FECHA o arquivo teste.txt { System.out.println(“ERRO durante manipulação arquivo “ + nomeArquivo); } } } Criação de Arquivo BufferedWriter conexao; // declara variável para “gravar” ATENÇÃO: A instrução a seguir sempre RECRIA o arquivo, ou seja, se o arquivo já existe o arquivo é “zerado”. conexao = new BufferedWriter( new FileWriter ( “teste.txt” ) ); Para que o arquivo não seja recriado utilize TRUE, no parâmetro da abertura do arquivo, conforme instrução que segue: conexao = new BufferedWriter( new FileWriter ( “teste.txt” , true) ); Leitura com Buffer import java.io.*; public class LerDoArquivo { public static void main(String[] args) { String nomeArquivo = "teste.txt“, linha; BufferedReader conexao; // declara variável para “ler” try { // a instrução abaixo ABRE o arquivo teste.txt para Leitura usando buffer conexao = new BufferedReader( new FileReader ( nomeArquivo ) ); // as linhas abaixo lêem os dados do arquivo teste.txt e exibem na tela linha = conexao.readLine( ); // carrega primeira linha do arquivo while ( linha != null) { // null indica que chegou no fim do arquivo System.out.println( linha); linha = conexao.readLine(); // carrega a próxima linha do arquivo } conexao.close( ); // FECHA o arquivo teste.txt } catch (Exception e) { System.out.println(“ERRO durante manipulação arquivo “ + nomeArquivo); } } } Tratamento De Exceção Try - Catch Durante a execução de um programa podem ocorrer erros, tais como : Divisão por zero entrada de dados inválida; erros aritméticos; estouro de limites de arrays; falhas no tratamento de arquivos; etc Quando ocorre um erro o programa termina de maneira anormal, geralmente com uma mensagem “incompreensível” O Java permite que se houver um erro de execução, este erro seja tratado pelo próprio programa. Por exemplo imprimir uma mensagem mais explicativa, etc. O tratamento de Exceções em Java é feito através da construção try-catch Try - Catch try { // instruções do programa } catch ( Exception e) { // Ações ou Mensagem de Erro a exibir } Exemplo Note o “;” como caracter de separação entre os “dados” Note o “split” que separa os dados pelo caracter “;”