Motivação. Java First-Tier: Aplicações. Entrada & Saída. Stream de Entrada. Stream de Saída. Pacote java.io. Leitura e Escrita de Streams

Documentos relacionados
Programação Java. Entrada & Saída

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Manipulação de Arquivos

Reader e Writer para streams de caracteres (texto).

InputStream e OutputStream para ler/ escrever bytes e das classes abstractas Reader e Writer para ler /escrever caracteres (texto).

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1

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

Hierarquia de classes. Veja as diversas classes do pacote

Gravação de objetos em arquivos

Objetivos deste capítulo

Programação de Computadores II TCC /Turma A 1

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

Programação de Computadores II TCC Profs.: Anselmo Montenegro (1) & Marcos Lage (2) (1) (2)

Manipulação de arquivos. João Paulo Q. dos Santos

Reader e Writer para streams de caracteres (texto).

Modulo II Tópicos em Java - IO

Arquivos continuação. Profa. Thienne Johnson EACH/USP

Notas de POO: interfaces, excepções e input/output

Manipulando Arquivos em Java

Streams e Ficheiros I/O

Principais APIs de Suporte à Linguagem Java: Visão Geral

Persistência. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

AULA TEÓRICA 4. Tema 5. Ficheiros. Ficheiro do tipo texto. Ficheiros de Objectos. Ø Classe File Ø Criação. Manipulação. Ø Classe StringTokenizer

Universidade Federal de Pelotas Bacharelado em Ciência da Computação Programação Orientada a Objetos Prof. Gerson Cavalheiro 1/6

10 Arquivos e fluxos. Desenvolvimento OO com Java. Vítor E. Silva Souza

20/10/15. Arquivos e fluxos. Arquivos. Plataformas e sistemas de arquivo. A classe java.io.file. Modo de operação. Fluxos, leitores e escritores

Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC, Programação em Comunicações

Módulo 13. Socket. Programação Orientada a Objetos Java (Rone Ilídio)

Unidade VIII Persistência de Dados em Java

Decorator e Composite. Nazareno Andrade (baseado no material de Hyggo Almeida)

Java Standard Edition (JSE)

Laboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Array de objectos Array de objectos Criação Exemplo:

Ler e escrever bytes, caracteres e Strings de/para a entrada e saída padrão. Ler e escrever bytes, caracteres e Strings de/para arquivos

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP

Tratamento de Erros com Excepções

Redes de Computadores

Linguagem de programação Arquivos e tratamento de erros

Streams. Streams. Tipos: Utilizac~ao:

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Linguagens de Programação Conceitos e Técnicas. Variáveis e Constantes

User Datagram Protocol

Tratamento de Exceções

Tratamento de Exceções, Multithreads e arquivos (em Java) Programação Orientada a Objetos

Java - Arquivos. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio

Programação Java. Tratamento de Exceções

Tratamento de Exceções. Grupo de Linguagens de Programação Departamento de Informática PUC-Rio

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

21/05/2013. Informações Complexas. Arquivos de Texto e Arquivos Binários. Hierarquia de Dados. Armazena Informação. Classificação de Arquivos

GUIA DE UTILIZAÇÃO DE MOTOR DE SCRIPTING SOFIA2. Versão 4

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

JAVA. Professor: Bruno Toledo

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Java - Introdução à Linguagem

CETEC Centro Paula Souza

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos

Projeto V (U900005) Ciências da Computação Projeto II (U900003) Engenharia da Computação Prof. Valdir Gil Pillat

Tratamento de Exceções

Programação com Sockets

RESUMO DOS TÓPICOS + IMPORTANTES

Tratamento de Exceções

Coleções. João Paulo Q. dos Santos

Redes de Computadores II. Programação com Sockets em Python

Conexão HTTP em Java ME Aula 7. Marcio Seiji Oyamada

Palavras Reservadas da Linguagem Java

Network Programming. Conceitos Básicos A classe InetAddress Programação de Socket TCP Programação de Socket UDP

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

Programação Estruturada e Orientada a Objetos

Instituto Superior de Engenharia de Lisboa

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

ALOCAÇÃO DINÂMICA DE MEMÓRIA

PROGRAMAÇÃO JAVA. Parte 3

Capítulo 6. Java IO - Ficheiros

Linguagem de Programação II Implementação

Programação de Computadores II TCC /Turma A 1

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

No final deste curso, saberás criar programas através da linguagem de programação Java.

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

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

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

Se você omitir :6789, o browser irá assumir a porta 80, que, provavelmente, não terá nenhum servidor à escuta.

Caracterizando o Consumo de Energia de APIs de E/S da Linguagem Java

Streams. Profa. Patrícia A. Jaques Unisinos

Interfaces POO. Prof. Marcio Delamaro

Roteiro. Introdução a Arquivos. Streams Serialização Arquivos de Acesso Randômico Exercícios. Armazenamento. Dados em vetores, listas e variáveis

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA CONTROLE DE ENTRADA E SAÍDA DE DADOS JAVA.

Introdução ao Java. Programação Orientada a Objetos Java. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

Programação Orientada por Objectos 2007/2008

Mecanismos de Comunicação. Sockets em java (

Laboratório de Programação

Transcrição:

Java First-Tier: Aplicações Entrada & Saída Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Motivação Uma aplicação normalmente precisa obter e/ou enviar informações a fontes/destinos externos arquivos, conexões de rede, memória Essas informações podem ter vários tipos bytes/caracteres, dados, objetos Java utiliza um mecanismo genérico que permite tratar E/S de forma uniforme Streams de entrada e saída 2 Stream de Entrada Para obter informações, uma aplicação abre um stream de uma fonte (arquivo, socket, memória) e lê sequencialmente stream Stream de Saída Para enviar informações, uma aplicação abre um stream para um destino (arquivo, socket, memória) e escreve sequencialmente stream Fonte Informação lê Aplicação Aplicação escreve Informação Fonte 3 4 Leitura e Escrita de Streams Independentemente da fonte/destino e do tipo de informações, os algoritmos para leitura e escrita são basicamente os mesmos Leitura abre um stream enquanto há informação lê informação fecha o stream Escrita abre um stream enquanto há informação escreve informação fecha o stream Pacote java.io Coleção de classes (streams) que suportam esses algoritmos As classes são divididas em duas hierarquias, baseadas no tipo de dados (bytes ou caracteres) sobre os quais operam InputStream/OutputStream Reader/Writer classes abstratas 5 6 1

Streams de Bytes As classes InputStream e OutputStream são as superclasses abstratas de todos os streams de bytes (dados binários) InputStream define um método abstrato read para ler um byte de uma stream OutputStream define um método abstrato write para escrever um byte em uma stream Subclasses provêem E/S especializada para cada tipo de fonte/destino Exemplo: System.in É um objeto do tipo InputStream public static final InputStream in Esse stream já está aberto e pronto para prover dados à aplicação int bytesprontos = System.in.available(); if (bytesprontos > 0){ byte[] entrada = new byte[bytesprontos]; System.in.read(entrada); 7 8 Exemplo: System.out É um objeto do tipo PrintStream, subclasse de OutputStream public static final PrintStream out Esse tipo de stream fornece a seu destino representações de vários tipos de dados public void print(float f) public void print(string s) public void println(string s) É uma extensão da classe Exception Sinaliza a ocorrência de uma falha ou interrupção em uma operação de E/S Algumas subclasses: EOFException,, Interrupted, MalformedURLException, SocketException. 9 10 Streams de Caracteres As classes Reader e Writer são as superclasses abstratas de todos os streams de caracteres Reader define um método abstrato read para ler uma sequência de caracteres de uma stream Writer define um método abstrato write para escrever uma sequência de caracteres em uma stream Subclasses provêem E/S especializada diferentes tipos de fonte/destino StringReader Streams de Strings public StringReader(String str) StringWriter public StringWriter(int buf_size) public String tostring() 11 12 2

Buffered Streams Por default,os streams não são bufferizados essa funcionalidade pode ser obtida adicionando-se uma camada sobre o stream BufferedInputStream, BufferedOutputStream public BufferedInputStream(InputStream in, int size) BufferedReader, BufferedWriter public BufferedReader(Reader in, int size) public String readline() throws Streams de Conversão Pontes entre streams de bytes e de caracteres public InputStreamReader(InputStream i) public InputStreamReader(InputStream i, String enc) throws UnsupportedEncodingException public OutputStreamWriter(OutputStream o) public OutputStreamWriter(OutputStream o, String enc) throws UnsupportedEncodingException Para maior eficiência, pode-se utilizar streams bufferizadas: BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 13 14 Entrada/Saída em arquivos Acesso via streams FileInputStream FileOutputStream FileReader FileWriter Acesso aleatório RandomAccessFile 15 Classe FileInputStream Especialização de InputStream para leitura de arquivos public FileInputStream(String name) throws public FileInputStream(File file) throws Usando stream bufferizada: BufferedInputStream in = new BufferedInputStream (new FileInputStream( arquivo.dat )); 16 Classe FileOutputStream Especialização de OutputStream para escrita em arquivos public FileOutputStream(String name) throws public FileOutputStream(String name, boolean append) throws public FileOutputStream(File file) throws Classe FileReader É uma subclasse de InputStreamReader public FileReader(String name) throws public FileReader(File file) throws Usando stream bufferizada: BufferedReader in = new BufferedReader (new FileReader( arquivo.dat )); 17 18 3

Exemplo de Leitura de Arquivo Classe FileWriter try { Reader r = new FileReader("test.txt"); int c; while ((c = r.read())!= -1) { System.out.println("Li caracter " + c); r.close(); catch ( e) { System.out.println("test.txt não existe"); catch ( e) { System.out.println("Erro de leitura"); É uma subclasse de OutputStreamWriter public FileWriter(String name) throws public FileWriter(String name, boolean append) throws public FileWriter(File file) throws 19 20 Exemplo de leitura e escrita Classe File import java.io.*; public class Copy { public static void main(string[] args) throws { FileReader in = new FileReader( filein.txt ); FileWriter out = new FileWriter( fileout.txt ); int c; while ((c = in.read())!= -1) out.write(c); in.close(); out.close(); Representa um arquivo (ou diretório) no sistema de arquivos nativo Permite obter informações sobre arquivos e diretórios Permite também executar operações como criar, renomear e apagar arquivos e diretórios 21 22 Streams de Dados Exemplo de stream de dados Definidos por interfaces DataInput DataOutput Permitem escrita e leitura de tipos básicos Essas interfaces são implementadas por DataInputStream DataOutputStream RandomAccessFile 23 try { FileInputStream fin = new FileInputStream( arquivo.dat ); DataInputStream din = new DataInputStream(fin); int num_valores = din.readint(); double[] valores = new double[num_valores]; for (int i = 0 ; i < num_valores ; i++) valores[i] = din.readdouble(); catch (EOFException e) { catch ( e) { catch ( e) { 24 4

Classe RandomAccessFile Permite a leitura e escrita em um arquivo de acesso randômico Implementa as interfaces DataInput e DataOutput Possui um file pointer que indica a posição (índice) corrente o file pointer pode ser obtido através do método getfilepointer e alterado através do método seek 25 Exemplo import java.io.*; public class TesteRandom{ public static void main(string argv[]){ try { TesteRandom r = new TesteRandom(); RandomAccessFile raf = new RandomAccessFile("teste.txt","rw"); r.escreve(raf); r.leum(raf,2); r.escreveum(raf,2,'x'); r.leum(raf,2); catch( ioe) {System.out.println(ioe); public void escreve(randomaccessfile raf) throws { char[] letras = {'a', 'b', 'c', 'd'; for(int i=0; i<4;i++){ raf.writechar(letras[i]); public void leum(randomaccessfile raf, int pos) throws { raf.seek(pos); System.out.println(raf.readChar()); public void escreveum(randomaccessfile raf, int pos, char c) throws { raf.seek(pos); raf.writechar(c); 26 Streams de Objetos Definidos pelas interfaces ObjectInput e ObjectOutput implementadas por ObjectInputStream e ObjectOutputStream ObjectInput estende DataInput para incluir objetos, arrays e Strings ObjectOutput estende DataOutput para incluir objetos, arrays e Strings Utilização de streams de Objetos Um ObjectInputStream deserializa dados e objetos anteriormente escritos através de um ObjectOutputStream. Cenários de utilização: persistência de objetos, quando esses streams são usados em conjunto com FileInputStream e FileOutputStream transferência de objetos entre hosts 27 28 ObjectInputStream ObjectOutputStream public final Object readobject() throws ClassNotFoundException, public final void writeobject(object obj) throws 29 30 5

Exemplo de serialização FileOutputStream ostream = new FileOutputStream("t.tmp"); ObjectOutputStream p = new ObjectOutputStream(ostream); p.writeint(12345); p.writeobject("today"); p.writeobject(new Date()); p.flush(); ostream.close Recuperando os objetos FileInputStream istream = new FileInputStream("t.tmp"); ObjectInputStream p = new ObjectInputStream(istream); int i = p.readint(); String today = (String)p.readObject(); Date date = (Date)p.readObject(); istream.close(); 31 32 Interface Serializable Somente objetos cujas classes implementem a marker interface Serializable podem ser serializados Essa interface não tem métodos, mas uma classe serializable pode definir métodos readobject e writeobject para fazer validações no estado do objeto Exemplo class Funcionario implements Serializable { private void readobject(objectinputstream is) throws ClassNotFoundException, { is.defaultreadobject(); if (!isvalid()) throw new ( Invalid Object ); private boolean isvalid() { 33 34 Uniform Resource Locator A classe URL modela URLs, permitindo a obtenção de informações e conteúdo de páginas na Web Essa classe é parte do pacote java.net import java.io.*; import java.net.*; Exemplo de Uso de URL public class PegaPagina { public static void main(string[] args) throws Exception { if (args.length == 0) { System.err.println("Forneça o endereço da página."); return; URL url = new URL(args[0]); InputStream is = url.openstream(); Reader r = new InputStreamReader(is); BufferedReader br = new BufferedReader(r); String l; while ((l = br.readline())!= null) { System.out.println(l); 35 36 6

Lendo de Arquivos.jar A classe Class provê métodos para obter um recurso como URL ou InputStream. Quem efetivamente obtém o recurso é o class loader da classe em questão, que sabe de onde ela foi obtida public URL getresource(string name) public InputStream getresourceasstream(string name) Exemplo do Applet Exemplos getaudioclip(getclass().getresource("spacemusic.au")); Outro exemplo InputStream is = getclass().getresourceasstream( arquivo.dat")); 37 38 7