Arquivos. Vanessa Braganholo

Documentos relacionados
Arquivos. Leonardo Murta

Arquivos. Vanessa Braganholo

Arquivos. Vanessa Braganholo

Estruturas de Repetição e String. Vanessa Braganholo

Entrada e Saída Exercício. Linguagem Java. Adenilso da Silva Simão 01/09/05

Variáveis Compostas. Vanessa Braganholo

Operadores e Estruturas de Decisão. Vanessa Braganholo

Organização de programas em Python. Vanessa Braganholo

Estruturas de Repetição e String

Organização de programas em Java

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Vetores Unimensionais

Organização de programas em Java

PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA II

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Vetores Unimensionais

Introdução à Programação. Vanessa Braganholo

Estruturas de Repe,ção e String

Linguagem de Programação JAVA. Tiago Alves de Oliveira

Operadores e Estruturas de Decisão

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

Tipos primitivos de Java Entrada de Dados Formatação da Saída. Aula 03

TCC 00308: Programação de Computadores I Organização de programas em Python

Tratamento de Exceções

Organização de programas em Java

LÓGICA DE PROGRAMAÇÃO (JAVA) ESTRUTURAS REPETIÇÃO. Professor Carlos Muniz

Programação Orientada a Objetos

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

Computação 1 - Python Aula 11 - Teórica. programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 29

Computação 1 - Python Aula 12 - Teórica: Interação com o usuário e programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 25

Linguagem de programação Java

Seleção Múltipla Laços (while, do-while, for) AULA 05

Programação de Computadores I. Aula - Vetores. Professor Ilaim Costa Junior.

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

Subprogramação. Vanessa Braganholo

Tipos de dados e comandos POO

Lista de Exercícios de Programação Orientada a Objetos

Introdução à Programação

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Aula de PG Novembro de 2013, LT14D e LT11D - Sobre o Tipo String do Java

Estruturas de Repetição. Vanessa Braganholo

Comando Portugol (Visualg) Java

Vetores. Vanessa Braganholo

CONTEÚDO 04 VETORES. Disciplina: Algoritmos e POO Professora: Alba Lopes.

GEQ Prof. Paulo R. Coelho. Lista para prova

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Fundamentos de programação

Aula 7 Modularização. Processamento da Informação. Universidade Federal do ABC

Estruturas de Repetição. Vanessa Braganholo

MCG126 Programação de Computadores II

Manipulação de Strings. Vanessa Braganholo

Linguagem Java - Introdução

Programação de Computadores para GI

Arrays em Java. Alberto Costa Neto DComp - UFS

Algoritmia e Programação APROG. Ficheiros de Texto. Java. Nelson Freire (ISEP DEI-APROG 2014/15) 1/18

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Classes, instâncias e métodos de acesso. prática

1ª Lista de Exercícios

Como pôde verificar, a criação de um objecto do tipo File não cria o ficheiro em disco.

Aula 2 POO 1 Prática. Profa. Elaine Faria UFU

Estruturas de Repetição. Leonardo Murta

Programação Orientada a Objetos SANTOS, Rafael (PLT)

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

Programação Básica. Estrutura de um algoritmo

Vetores Unimensionais

Passo-a-passo para desenvolver um Programa usando a Linguagem Python

Algoritmos e Programação

Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano

01. [Sebesta, 2000] Defina exceção, manipulador de exceções, levantamento de uma exceção, desativação de uma exceção e exceção incorporada.

Capítulo 10. Tratamento de Exceções. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Arrays em Java. Introdução à Programação. Bruno Cartaxo

Linguagem de Programação C

Sintaxe Básica do Java. João Paulo Q. dos Santos

Transcrição:

Arquivos Vanessa Braganholo vanessa@ic.uff.br

Aula de hoje Até então só consideramos teclado e monitor como mecanismos de entrada e saída Veremos como ler e escrever em arquivos

Motivação Em algumas situações é desejado ler dados de arquivos e escrever dados em arquivos Não é necessário digitar via teclado os dados a cada execução do programa Os resultados do programa podem ser impressos ou enviados para outras pessoas com mais facilidade O estado do programa (jogo, por exemplo) pode ser salvo e recarregado em outro momento

Leitura e escrita de arquivos Arquivo João 10 Pedro 12 Paulo 11 Entrada Saída Programa Problema: como traduzir o conteúdo do arquivo para números inteiros, números reais, strings, etc?

Leitura e escrita de arquivos Scanner e PrintWriter Arquivo João 10 Pedro 12 Paulo 11 Entrada Saída Programa

Escrita de arquivos É muito parecido com escrita no monitor, só que precisa conectar com o arquivo antes Vamos ver um exemplo...

Exemplo: escrevendo 100 números aleatórios no monitor public class Monitor { for (int i = 0; i < 100; i++) { System.out.println(Math.round(Math.random() * 100));

Exemplo: escrevendo 100 números aleatórios em um arquivo import java.io.filewriter; import java.io.printwriter; public class Arquivo { PrintWriter arquivo = null; try { FileWriter out = new FileWriter("numeros.txt"); arquivo = new PrintWriter(out); for (int i = 0; i < 100; i++) { arquivo.println(math.round(math.random() * 100)); catch (Exception e) { System.out.println(e); finally { arquivo.close();

Exemplo: escrevendo 100 números aleatórios em um arquivo import java.io.filewriter; import java.io.printwriter; O arquivo aparecerá na raiz do projeto do NetBeans public class Arquivo { PrintWriter arquivo = null; try { FileWriter out = new FileWriter("numeros.txt"); arquivo = new PrintWriter(out); for (int i = 0; i < 100; i++) { arquivo.println(math.round(math.random() * 100)); catch (Exception e) { System.out.println(e); finally { arquivo.close(); Abertura do arquivo para escrita e posterior fechamento

Exemplo: escrevendo 100 números aleatórios em um arquivo import java.io.filewriter; import java.io.printwriter; public class Arquivo { PrintWriter arquivo = null; try { FileWriter out = new FileWriter("numeros.txt"); arquivo = new PrintWriter(out); for (int i = 0; i < 100; i++) { arquivo.println(math.round(math.random() * 100)); catch (Exception e) { System.out.println(e); finally { arquivo.close(); Escrita no arquivo

Exemplo: escrevendo 100 números aleatórios em um arquivo import java.io.filewriter; import java.io.printwriter; public class Arquivo { PrintWriter arquivo = null; try { FileWriter out = new FileWriter("numeros.txt"); arquivo = new PrintWriter(out); for (int i = 0; i < 100; i++) { arquivo.println(math.round(math.random() * 100)); catch (Exception e) { System.out.println(e); finally { arquivo.close(); tratamento de exceção no acesso ao arquivo

Equivalente ao seguinte código... import java.io.printwriter; public class Arquivo { try (PrintWriter arquivo = new PrintWriter("numeros.txt")) { for (int i = 0; i < 100; i++) { arquivo.println(math.round(math.random() * 100)); catch (Exception e) { System.out.println(e);

Leitura de arquivos Novamente, é muito parecido com leitura do teclado, só que precisa conectar com o arquivo antes Vamos ver um exemplo...

Exemplo: lendo 100 números do teclado e escrevendo a média import java.util.scanner; public class Teclado { Scanner teclado = new Scanner(System.in); int soma = 0; for (int i = 0; i < 100; i++) { soma += teclado.nextint(); System.out.println("Média: " + soma / 100f);

Exemplo: lendo 100 números de um arquivo e escrevendo a média import java.io.filereader; import java.util.scanner; public class Arquivo { Scanner arquivo = null; try { FileReader in = new FileReader("numeros.txt"); arquivo = new Scanner(in); int soma = 0; for (int i = 0; i < 100; i++) { soma += arquivo.nextint(); System.out.println("Média: " + soma / 100f); catch (Exception e) { System.out.println(e); finally { arquivo.close();

Exemplo: lendo 100 números de um arquivo e escrevendo a média import java.io.filereader; import java.util.scanner; public class Arquivo { Scanner arquivo = null; try { FileReader in = new FileReader("numeros.txt"); arquivo = new Scanner(in); int soma = 0; for (int i = 0; i < 100; i++) { soma += arquivo.nextint(); System.out.println("Média: " + soma / 100f); catch (Exception e) { System.out.println(e); finally { arquivo.close(); O arquivo será procurado na raiz do projeto do NetBeans Abertura do arquivo para leitura e posterior fechamento Arquivos

Exemplo: lendo 100 números de um arquivo e escrevendo a média import java.io.filereader; import java.util.scanner; public class Arquivo { Scanner arquivo = null; try { FileReader in = new FileReader("numeros.txt"); arquivo = new Scanner(in); int soma = 0; for (int i = 0; i < 100; i++) { soma += arquivo.nextint(); System.out.println("Média: " + soma / 100f); catch (Exception e) { System.out.println(e); finally { arquivo.close(); Leitura do arquivo

Exemplo: lendo 100 números de um arquivo e escrevendo a média import java.io.filereader; import java.util.scanner; public class Arquivo { Scanner arquivo = null; try { FileReader in = new FileReader("numeros.txt"); arquivo = new Scanner(in); int soma = 0; for (int i = 0; i < 100; i++) { soma += arquivo.nextint(); System.out.println("Média: " + soma / 100f); catch (Exception e) { System.out.println(e); finally { arquivo.close(); tratamento de exceção no acesso ao arquivo

Equivalente ao seguinte código... import java.io.filereader; import java.util.scanner; public class Arquivo { try (Scanner arquivo = new Scanner(new FileReader("numeros.txt"))) { int soma = 0; for (int i = 0; i < 100; i++) { soma += arquivo.nextint(); System.out.println("Média: " + soma / 100f); catch (Exception e) { System.out.println(e);

E como tratar diferentes tipos? Fácil... é só fazer como faria no caso de escrita no monitor e leitura do teclado Exemplo: vamos fazer dois programas Um que leia os dados de uma pessoa (primeiro nome, ultimo nome e idade) e escreva em um arquivo Outro que liste os dados desse arquivo Importante: respeitar a estrutura do arquivo O arquivo deve ser lido sempre na mesma ordem em que foi gravado

Exemplo: Cadastro de pessoas import java.io.filewriter; import java.io.printwriter; import java.util.scanner; Concatena com os dados preexistentes no arquivo public class Cadastro { Scanner teclado = new Scanner(System.in); try (PrintWriter arquivo = new PrintWriter(new FileWriter("pessoas.txt", true))) { arquivo.println(); System.out.print("Primeiro nome: "); arquivo.print(teclado.next() + " "); System.out.print("Último nome: "); arquivo.print(teclado.next() + " "); System.out.print("Idade: "); arquivo.print(teclado.nextint()); catch (Exception e) { System.out.println(e);

Exemplo: Listagem das pessoas cadastradas import java.io.filereader; import java.util.scanner; public class Listagem { try (Scanner arquivo = new Scanner(new FileReader("pessoas.txt"))) { while (arquivo.hasnext()) { String primeironome = arquivo.next(); String ultimonome = arquivo.next(); int idade = arquivo.nextint(); System.out.println(primeiroNome + " " + ultimonome + " tem " + idade + " anos de idade."); catch (Exception e) { System.out.println(e);

Exercício Faça um programa que leia um número N e gere um arquivo com N nomes e idades aleatórios Faça uso de dois arquivos criados na mão: um que contenha 20 nomes e outro que contenha 20 sobrenomes Gere aleatoriamente de 0 a 2 iniciais de nome do meio e a idade Cada linha deve conter um nome completo e a sua idade

Exercício Faça um programa que leia o arquivo de nomes e idades aleatórios do exercício anterior e gere um arquivo de índice ordenado por nome Cada linha do arquivo de índice deve conter o número da linha equivalente do arquivo aleatório Faça um programa que leia o arquivo de nomes e idades aleatórios do exercício anterior e gere um arquivo de índice ordenado por idade Cada linha do arquivo de índice deve conter o número da linha equivalente do arquivo aleatório

Exercício Estenda o exemplo do cadastro para considerar também a altura da pessoa Armazene a altura como float, usando, como separador de decimais e somente 2 casas decimais (ex: 1,88) Para alterar a forma com que o float é escrito no arquivo, use o método PrintWriter.format() no lugar de PrintWriter.print() Leia o capítulo sobre formatação de saída no tutorial ( http://docs.oracle.com/javase/tutorial/essential/io/formatting.html) Dica: para escrever a altura no arquivo, use arquivo.format(locale.forlanguagetag("pt-br"), "%.2f", altura) no lugar de arquivo.print(altura)

Referências Slides de Leonardo Murta

Arquivos Vanessa Braganholo vanessa@ic.uff.br