I/O Carlos Bazilio Depto de Ciência e Tecnologia

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

TRATAMENTO DE ARQUIVOS EM C
JAVA Orientação a Objetos
Recursividade Inhaúma Neves Ferraz
Programação em Java Prof. Maurício Braga
Sistemas distribuídos
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
Relatórios Marco Antonio Software Architect Agosto
Comunicação entre processos distribuídos
Tratamento de Exceções
Chain of Responsibility
Persistência de objetos em arquivo texto usando Java
Generalização, Especialização e Conceitos
Streams Java.
Prof. Luis Otavio Alvares
Wagner Santos C. de Jesus
Excepções e Streams em Java
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
Concorrência em Java Threads em Java.
Introdução a linguagem Python
Threads: Introdução e Implementação
Tipos Agregados Homogêneos e Listas
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Denyson José Eduardo Souza Ivan França Rafael Lima.
C# Sharp Shooters.NET Universidade Federal de Pernambuco Centro de Informática Recife, 23/09/2002 Autor: Marden Menezes Costa Propriedades.
Nazareno Andrade (baseado no material de Hyggo Almeida)
PROGRAMAÇÃO ESTRUTURADA II
JAVA Linguagem Ambiente de Desenvolvimento
Streams –input e output
Linguagem técnica de programação I Java
Programa Expresso de Capacitação Módulo J2ME Aula 5 – Record Management System.
Arquivos if669 - Introdução à Programação Monitoria de IP Igor Ebrahim (ies) Nicole Sultanum (nbs2) Paulo Borba (phmb)
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Arquivo.
1 Introdução a C# Sharp Shooters.NET Universidade Federal de Pernambuco Centro de Informática Recife, 15/08/2002 Autor: Marden Menezes Costa.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
LPII Professora Lucélia. Pacotes Um pacote em Java é um diretório onde ficam armazenadas uma ou mais classes. Geralmente as classes com a mesma afinidade.
BC-0502 Metodologia e Algoritmos Computacionais Santo André, Abril de Arquivos em Java.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Capítulo 10. Stream – Fluxo I/O  Acessando o sistema de arquivos java.io.File  Gravação em arquivos texto java.io.FileWriter java.io.BufferedWriter.
Stream – Fluxo I/O Manipulação de arquivos texto
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
1 JAVA I/O (Entrada e Saída em JAVA) Prof. Alexandre Monteiro Recife.
Profa. Patrícia A. Jaques
Tratamento de Exceções
Programação Orientada a Objetos - Java
CLASSE ARQUIVO Comandos Básicos. Criação da variável Arquivo nomeDoArquivo = new Arquivo ( “nomeDoArquivo.in”, “nomeDoArquivo.out” ); nomeDoArquivo.in.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Capítulo 6 Exceções.
Estrutura de Controle em JAVA
Exceções Profa. Patrícia A. Jaques Alterada por Leandro Tonietto abr-15.
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
April 05 Prof. Ismael H. F. Santos - 1 Modulo II – Tópicos em Java - IO Prof. Ismael H F Santos.
Linguagem I Strings.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Programação de Computadores I – Arquivos
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
Conceitos Básicos e Manipulação de Objetos
Socket em Java.
PROGRAMAÇÃO Prof.: Bruno Rafael de Oliveira Rodrigues.
Programação Distribuída em Java Aula Na aula passada vimos: Introdução –O que podemos fazer na rede Conceito de Rede –Máquinas conectadas Protocolos.
Arquivos. Os computadores utilizam os arquivos como estruturas de dados para armazenamento de longo prazo de grandes volumes de dados. Dados mantidos.
© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti.
Programação II Arquivos Autoria: Ernani Santos Modificação: Clebson Oliveira Adaptação: Claudia Boeres.
Tipos de Arquivos Arquivos podem armazenar caracteres (arquivo texto) ou bytes (arquivos binários); Na prática, arquivos textos são abertos por editores.
Transcrição da apresentação:

I/O Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense

Introdução Arquivos fornecem aos sistemas uma alternativa para persistência de dados; Com isso, informações gravadas num momento podem ser recuperadas noutro, “mesmo que a luz acabe”; Em Java, interfaces e classes para a manipulação de arquivos estão disponíveis no pacote “java.io” (http://java.sun.com/javase/6/docs/api/java/io/pa ckage-summary.html).

Tipos de Arquivos Arquivos podem armazenar caracteres (arquivo texto) ou bytes (arquivos binários); Na prática, arquivos textos são abertos por editores de texto simples, enquanto que arquivos binários precisam ser abertos por programas específicos; Exemplos de arquivos: Texto (qualquer arquivo que só armazene texto): .txt, .xml, .bat … Binário (possuem uma codificação de bytes específica): .doc, .exe, .zip, …

Abertura de Arquivos Arquivos podem ser abertos para leitura (arquivo já existente) ou escrita (tanto faz); Esta abertura é usualmente realizada através da chamada à um construtor de classe apropriado (new): FileInputStream e FileOutputStream para leitura e escrita de arquivos vistos como uma sequência de bytes; FileReader e FileWriter para leitura e escrita de arquivos vistos como uma sequência de caracteres;

Fechamento de Arquivos Para o fechamento utilizamos o método close(); Antes da chamada a este método, o arquivo manipulado fica “bloqueado” para o programa que o utiliza; Por isso, é uma prática recomendável fechar o arquivo imediatamente após a sua utilização.

Exemplo de Leitura de Arquivo Binário import java.io.*; public class MostraArquivo { public static void main(String[] args) { InputStream fi = null; int i = -1; try { fi = new FileInputStream("c:\\teste.txt"); } catch (FileNotFoundException e) { System.out.println("Arquivo não encontrado !!"); } do { i = fi.read(); } catch (IOException e) { System.out.println("Arquivo não pode ser lido !!"); if (i != -1) System.out.print((char) i); } while (i != -1);

Exemplo de Leitura de Arquivo Texto import java.io.*; public class MostraArquivoTexto { public static void main(String[] args) { BufferedReader in = null; try { in = new BufferedReader(new FileReader("c:\\teste.txt")); String str; while ((str = in.readLine()) != null) { System.out.println(str); } in.close(); } catch (IOException e) {

Diferenças na Leitura de Arquivos Texto e Binário Pudemos observar que o arquivo binário dado estava sendo processado byte a byte; Em contra-partida, o arquivo texto estava sendo acessado linha por linha (método readLine()); Por processar vários bytes ao mesmo tempo, a leitura linha por linha é mais simples; Em arquivos binários não há o conceito de linha.

Manipulação de Arquivos Binários A manipulação de arquivos binários possibilita mais eficiência no tratamento de arquivos; Para exemplificar, apresentaremos um exemplo de gravação de objetos (serialização); Neste exemplo, criaremos um conjunto de objetos, gravaremos estes num arquivo binário, e posteriormente recuperaremos seu conteúdo; Para um objeto ser serializável, sua classe precisa implementar a classe java.io.Serializable; Objetos que usualmente não são serializáveis são threads, sockets, etc. Mais informações: http://java.sun.com/developer/technicalArticles/Programmi ng/serialization/

Manipulação de Arquivos Binários 1/4 import java.io.*; public class Registro implements Serializable { int id; float nota; static int quant = 0; public Registro (float n) { quant++; id = quant; nota = n; }

Manipulação de Arquivos Binários 2/4 public static void main(String[] args) { InicializaRegistros(); RecuperaRegistros(); }

Manipulação de Arquivos Binários 3/4 public static void InicializaRegistros() { try { Registro reg = null; FileOutputStream f = new FileOutputStream("c:\\dados.dat"); ObjectOutputStream fobj = new ObjectOutputStream(f); for (int i=1; i<=10; i++) { reg = new Registro(i); fobj.writeObject(reg); } fobj.close(); f.close(); } catch (FileNotFoundException e) { } catch (IOException e) {

Manipulação de Arquivos Binários 4/4 public static void RecuperaRegistros() { try { FileInputStream f = new FileInputStream("c:\\dados.dat"); ObjectInputStream fobj = new ObjectInputStream(f); for (int i=1; i<=10; i++) { Registro reg = (Registro)fobj.readObject(); System.out.print("Id: " + reg.id); System.out.println(" Nota: " + reg.nota); } fobj.close(); f.close(); } catch (FileNotFoundException e) { } catch (IOException e) { } catch (ClassNotFoundException e) {

Parte da Hierarquia de Classes de java.io

Classe File A classe File provê construtores e métodos para a obtenção de dados sobre arquivos Esta classe apresenta uma visão abstrata e independente do sistema operacional utilizado para referência a arquivos e diretórios

Classe File Como exemplo de abstração, o campo estático File.separator indica o caracter usado para separar nomes em caminhos: (‘\’ no Windows e ‘/’ no Linux) Uma ilustração desta abstração acontece quando criamos um objeto do tipo File com 2 argumentos diferentes: ..\cursojava\temp\teste.txt ../cursojava/temp/texte.txt Em ambos os casos, ele converterá os separadores para o formato do sistema em uso Observe que este caracter também pode ser obtido como uma propriedade do sistema: System.getProperty(“file.separator”)

Classe File Alguns métodos importantes oferecidos por esta classe: public File(String nome) throws NullPointerException; Construtor que cria uma referência para o arquivo com o nome passado como argumento; public File(String dir, String nome) throws NullPointerException; Similar ao construtor dado acima. Entretanto, também pode ser fornecido o nome do diretório onde o arquivo será referenciado;

Classe File Outros métodos importantes : public String[] getPath(); Caminho completo do arquivo public void mkdir() throws SecurityException; Cria um novo diretório public boolean renameTo(File novo) throws SecurityException; Renomeia o diretório para o valor que é passado por parâmetro public boolean delete() throws SecurityException; Remove o arquivo ao qual o método foi aplicado

Exemplo de Uso da Classe File import java.io.File; public class ExemploFile { public static void main(String[] args) { File f = new File("c:\\teste.txt"); if (f.exists()) { System.out.println("Dados do arquivo " + f.getAbsolutePath()); System.out.println("Tamanho: " + f.length() + " bytes"); System.out.println("Pode ser escrito? " + (f.canWrite() ? "sim" : "não")); }

Exercícios Implemente o exemplo de arquivos binários. Faça um programa que crie uma cópia de um arquivo texto.

Solução do Segundo Exercício import java.io.*; public class CopiaArquivoTexto { public static void main(String[] args) { BufferedReader in = null; BufferedWriter out = null; try { in = new BufferedReader(new FileReader("c:\\teste.txt")); out = new BufferedWriter(new FileWriter("c:\\teste2.txt")); String str; while ((str = in.readLine()) != null) { out.write(str); } in.close(); out.close(); } catch (IOException e) {