Baixe o app para aproveitar ainda mais
Prévia do material em texto
ricardo.marcacini@ufms.br Prof. Ricardo M. Marcacini Curso: Algoritmos e Programação IIAlgoritmos e Programação II Manipulação de Arquivos (JAVA)Manipulação de Arquivos (JAVA) PARTE 1 – Arquivos de TextoPARTE 1 – Arquivos de Texto Sistemas de Informação 2º Semestre / 2013 http://www.marcacini.com.br/ufms/ Aula 2 Tipos de Arquivo (Texto e Binário) Declarando arquivos com File Leitura de arquivos com FileReader e BufferedReader Escrita de arquivos com FileWriter ALG2-02-ARQUIVOS-PARTE1 2 Motivação Dados do programa em execução ficam armazenados na memória do computador O que acontece quando o programa é encerrado? Dados são perdidos memória primária é volátil!→ ALG2-02-ARQUIVOS-PARTE1 3 Motivação Dados do programa em execução ficam armazenados na memória do computador O que acontece quando o programa é encerrado? Dados são perdidos memória primária é volátil!→ Como armazenar e recuperar dados Armazenar em disco arquivos!→ Memória secundária (não volátil) Pode ser acessado por vários programas que conheçam a estrutura do arquivo ALG2-02-ARQUIVOS-PARTE1 4 Tipos de Arquivos Dois tipos de arquivos: Texto e Binário Arquivos de Texto Sequência de caracteres ASCII Compreensíveis por humanos ALG2-02-ARQUIVOS-PARTE1 5 Tipos de Arquivos Dois tipos de arquivos: Texto e Binário Arquivos de Texto Sequência de caracteres ASCII Compreensíveis por humanos Arquivos Binários Sequência de bytes Não compreensíveis por humanos (normais) ALG2-02-ARQUIVOS-PARTE1 6 A Classe File Arquivos (e diretórios) são representados por meio de uma classe chamada File Seu programa deve incluir bibliotecas para manipulação de arquivos import java.io.*; Como declarar um variável do tipo arquivo? ALG2-02-ARQUIVOS-PARTE1 7 Exemplo01 – Declarando arquivos e obtendo detalhes sobre eles... ALG2-02-ARQUIVOS-PARTE1 8 Arquivos de Texto: LEITURA A leitura de arquivo de textos utiliza a classe java FileReader FileReader possui um método read() Leitura de um caractere por vez (código Ascii) O método read() retorna -1 quando chega no final do arquivo Vamos declarar um arquivo e testar FileReader e o método read() ALG2-02-ARQUIVOS-PARTE1 9 Exemplo02 – Leitura de arquivos de texto (caracter por caracter) com FileReader ALG2-02-ARQUIVOS-PARTE1 10 Arquivos de Texto: LEITURA Ler “caracter por caracter” pode ser ineficiente para muitas aplicações Podemos ler um bloco de texto inteiro de uma única vez (leituras com buffers!) A classe java BufferedReader Trabalha junto com o FileReader Leitura de linha por linha: método readLine() O método readLine() retorna null quando chega no final do arquivo ALG2-02-ARQUIVOS-PARTE1 11 Exemplo03 – Leitura de arquivos de texto (linha por linha) com BufferedReader ALG2-02-ARQUIVOS-PARTE1 12 Arquivos de Texto: ESCRITA A leitura de arquivo de textos utiliza a classe java FileWriter Criação automática do arquivo se ele não existe! FileWriter possui um método write() Escreve um caractere por vez (código Ascii) Vamos declarar um arquivo e testar FileWriter e o método write() ALG2-02-ARQUIVOS-PARTE1 13 Exemplo04 – Escrevendo em arquivos de texto com FileWriter ALG2-02-ARQUIVOS-PARTE1 14 Arquivos de Texto: ESCRITA O que acontece quando escrevemos um novo texto no mesmo arquivo com o programa do Exemplo04? O texto anterior é sobrescrito! Quero adicionar mais textos no final do arquivo! Como resolver? Basta ativar (append=true) no segundo argumento do FileWriter ALG2-02-ARQUIVOS-PARTE1 15 Exemplo05 – Escrevendo em arquivos de texto com FileWriter (adicionando no final do arquivo) ALG2-02-ARQUIVOS-PARTE1 16 Exemplo05 – Escrevendo em arquivos de texto com FileWriter (adicionando no final do arquivo) ALG2-02-ARQUIVOS-PARTE1 17 Manipulação de Strings Quando lidamos com arquivos textos precisamos manipular Strings Java possui muitos métodos úteis para manipulação de Strings Vamos rever os mais importantes... ALG2-02-ARQUIVOS-PARTE1 18 Manipulação de Strings String s = “TEXTO”; s.length() número de caracteres da string→ ALG2-02-ARQUIVOS-PARTE1 19 Manipulação de Strings String s = “TEXTO”; s.length() número de caracteres da string→ s.charAt(i) captura caracter na posição i→ ALG2-02-ARQUIVOS-PARTE1 20 Manipulação de Strings String s = “TEXTO”; s.length() número de caracteres da string→ s.charAt(i) captura caracter na posição i→ s.equals(“ABC”) verifica se o conteúdo de s é igual a → “ABC” (nesse caso retorna falso) ALG2-02-ARQUIVOS-PARTE1 21 Manipulação de Strings String s = “TEXTO”; s.length() número de caracteres da string→ s.charAt(i) captura caracter na posição i→ s.equals(“ABC”) verifica se o conteúdo de s é igual a → “ABC” (nesse caso retorna falso) s.toLowerCase() gera string com letras minúsculas→ ALG2-02-ARQUIVOS-PARTE1 22 Manipulação de Strings String s = “TEXTO”; s.length() número de caracteres da string→ s.charAt(i) captura caracter na posição i→ s.equals(“ABC”) verifica se o conteúdo de s é igual a → “ABC” (nesse caso retorna falso) s.toLowerCase() gera string com letras minúsculas→ s.toUpperCase() gera string com letras maiúsculas→ ALG2-02-ARQUIVOS-PARTE1 23 Manipulação de Strings String s = “TEXTO”; s.length() número de caracteres da string→ s.charAt(i) captura caracter na posição i→ s.equals(“ABC”) verifica se o conteúdo de s é igual a → “ABC” (nesse caso retorna falso) s.toLowerCase() gera string com letras minúsculas→ s.toUpperCase() gera string com letras maiúsculas→ s.trim() gera string removendo caracteres em branco → no início e fim da original ALG2-02-ARQUIVOS-PARTE1 24 Manipulação de Strings String s = “TEXTO”; s.length() número de caracteres da string→ s.charAt(i) captura caracter na posição i→ s.equals(“ABC”) verifica se o conteúdo de s é igual a → “ABC” (nesse caso retorna falso) s.toLowerCase() gera string com letras minúsculas→ s.toUpperCase() gera string com letras maiúsculas→ s.trim() gera string removendo caracteres em branco → no início e fim da original s.split(delimitador) “quebra” a string de acordo com → um delimitador, obtendo um vetor de strings. ALG2-02-ARQUIVOS-PARTE1 25 Vamos praticar... Ler uma planilha (formato texto : CSV) E entrada (dinheiro entrando na conta)→ S saída (dinheiro saindo da conta)→ Escrever um programa para: Parte 1: Calcular o saldo envolvendo todos os lançamentos! Parte 2: Calcular o saldo por tipo de lançamento (considere que já conhecemos os tipos de lançamento) Diapositivo 1 Diapositivo 2 Diapositivo 3 Diapositivo 4 Diapositivo 5 Diapositivo 6 Diapositivo 7 Diapositivo 8 Diapositivo 9 Diapositivo 10 Diapositivo 11 Diapositivo 12 Diapositivo 13 Diapositivo 14 Diapositivo 15 Diapositivo 16 Diapositivo 17 Diapositivo 18 Diapositivo 19 Diapositivo 20 Diapositivo 21 Diapositivo 22 Diapositivo 23 Diapositivo 24 Diapositivo 25
Compartilhar