Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Arquivos e tratamento de erros Professor: Saulo Henrique Cabral Silva
ARQUIVOS 2
Arquivos Dados armazenados em variáveis e arrays são temporários... Escopo? Memória RAM Para retenção de longo prazo dos dados é preciso utilizar a memória secundária. Onde os dados podem ser persistidos. Estamos interessados em armazenar os dados além da execução do software. 3
Arquivos - File File é útil para recuperar informações sobre arquivos ou diretórios em disco. Um File não processa diretamente um arquivo mas fornece um caminho, uma ligação entre o programa sendo executado e o arquivo/diretório ao qual se deseja manipular. 4
File Para construção de um File é necessário um nome de um arquivo ou diretório. O nome pode referenciar tanto uma URI, um diretório ou um arquivo. File f = new File("C:\\algumArquivo.txt"); 5
File - propriedades canread () Verifica se o arquivo/diretório em questão é Elegível para leitura do programa. canwrite () Verifica se o arquivo/diretório em questão é Elegível para gravação do programa. exists () Verifica se o diretório ou arquivo de fato existem.e isfile () Verifica se o caminho especificado representa um arquivo. getabsolutepath () Retorna o caminho absoluto do arquivo ou diretório. 6
Exercício Crie um programa que mostre quais as propriedades de um arquivo ou diretório da sua máquina... Cuidado!!! Para separar arquivos e diretórios em um ambiente Windows use: \ Para separar arquivos e diretórios em um ambiente Unix use: / 7
FileReader (leitura) Efetua a entrada de dados baseada em caracteres de um arquivo. Marcação do arquivo para realizar a leitura do arquivo especificado. A partir deste momento o arquivo esta marcado no modo leitura, e o mesmo estará sendo utilizado. FileReader canalleitura = new FileReader( file ); 8
FileWriter (escrita) Efetua a saída de dados baseada em caracteres de um arquivo. 1 FileWriter canalescrita = new FileWriter(file); 2 FileWriter canalescrita = new FileWriter(file,true); Arquivo é marcado para escrita... Não esqueça de fechar o arquivo!!! 9
TRATAMENTO DE ERROS!!! 10
Tratamento de erros Em Java cada método, e cada código define um contrato que deve seguir. Se o mesmo ocasionar algum erro (exceção) durante o seu processamento, ele deve ser passível de tentar contornar a situação de erro. Se o mesmo não for passível de ser processado e o erro não puder ser contornado, ele deve avisar aquele quem o chamou. Método A Método B 11
Tratamento de erros Para a criação de um bloco de tratamento de erros em Java, utilizamos o bloco: try-catch try { //faça algum processamento... } catch(exception ex){ } /*caso algum erro ocorra dentro do bloco try, o será executado automaticamente*/ bloco catch 12
Finally A clausula Finally, é executada independente de qual bloco for processado. Ela é executada tanto no try e no catch. Isso é uma garantia! try { // execute alguma coisa } catch (Exception ex) { // contorne o problema } finally { // é executado de qualquer forma, tanto no try - catch } 13
BUFFER S 14
BufferedReader / BufferedWriter Buffer s otimizados de leitura/escrita. Trabalham com as classes I / O do Java. Trabalham com um InputStream ou um OutputStream. Podem ser utilizados para troca de informações entre duas máquinas. (veremos adiante essa aplicação) Métodos constantemente utilizados: readline( ) write( ) 15
Estrutura dos Arquivos Linhas terminam o caractere especial \n. A última linha de um arquivo tem sempre o valor null. Métodos como flush() e close(), são uma boa prática... 16
PRATICANDO... 17
Estrutura básica para a leitura de um arquivo (extensões livres)... 1 Referenciar o arquivo dentro do diretório... 2 Criar um FileReader, utilizando a referência criada. 3 Criar um Buffer de leitura para o arquivo em questão (BufferedReader) 4 estrutura para efetuar a leitura de todas as linhas do arquivo... (sugestões?) 18
Estrutura básica para a escrita de um arquivo (extensões livres!!!)... 1 - Referenciar um diretório, atribuindo nome para o arquivo e extensão. 2 Criar um FileWriter para marcação do arquivo como ESCRITA. 3 Criar um BuferedWriter para a escrita otimizada do arquivo. 4 Efetuar a escrita dos dados necessários para a aplicação 5 Encerrar o fluxo de escrita do arquivo. 19
TP 3 20