Streams. Streams. Tipos: Utilizac~ao:

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

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

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

Reader e Writer para streams de caracteres (texto).

Java Basico Parte II. Para obter um comportamento polimorco fazer: cada classe que os herda. Polimorsmo em Java. I Excepc~oes.

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

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

Objetivos deste capítulo

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

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

Hierarquia de classes. Veja as diversas classes do pacote

Manipulação de Arquivos

Streams e Ficheiros I/O

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

Reader e Writer para streams de caracteres (texto).

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

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

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

Input / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file:

Capítulo 6. Java IO - Ficheiros

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

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

Gravação de objetos em arquivos

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

Unidade VIII Persistência de Dados em Java

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

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

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

Módulo VIII Linguagem Java Entrada e Saída de Dados Arquivos

JDBC - Java Data Base Connectivity

Tipos, Literais, Operadores

Tipos, Literais, Operadores

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

Utilização das classes Java para comunicação TCP/IP e UDP/IP

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

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

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

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

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

Mecanismos de Comunicação. Sockets em java (

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

Camada de Transporte. Bruno Silvério Costa

Tipos de dados e comandos POO

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

APIs Java: Tratamento de exceções e Coleções

Manipulando Arquivos em Java

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

Olho por olho, e o mundo acabará cego. Mohandas Gandhi

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

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

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

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Mecanismo de exceções em Java

Programa de Computador que funciona em Rede

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

Palavras Reservadas da Linguagem Java

Redes de Computadores

Programação Estruturada e Orientada a Objetos

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

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

Concorr^encia. A classe Thread (java.lang)

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Análise de Programação

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

PROGRAMAÇÃO JAVA. Parte 3

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Java : Comunicação Cliente-Servidor.

Instituto Superior de Engenharia de Lisboa

Tratamento de Erros com Excepções

Threads e IO. Sérgio Luiz Ruivace Cerqueira

MsC. João Maria MsC. Liviane Melo

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.

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

Programação II Java Streams. Christopher Burrows

RMS. Record Management System

Exceções. SCC0504 Programação Orientada a Objetos. Luiz Eduardo Virgilio da Silva ICMC, USP

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

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos

Linguagem de Programação II Implementação

Java { Conceitos Basicos

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

Capítulo II Modelos de Programação Distribuída

Linguagem de Programação C. Arquivos

Strings e Arrays POO

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

ESQUEMA AULA PRÁTICA 1

ESQUEMA AULA PRÁTICA 1

DATA ACCESS OBJECT (DAO)

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ SOCKETS UDP, TCP E MULTICAST. Prof. Cesar Augusto Tacla

Sumário. Ficheiros. Ficheiros

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

Fundamentos de programação

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

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

Transcrição:

Streams I Streams I Streams de entrada/sada I Streams para acesso a cheiros I sockets I ltros I serializac~ao de objectos I exemplos Complementos de Proramac~ao e Aloritmos { LEIC Streams Abstracc~ao do Java para tratar qualquer fonte ou destino de dados e que e independente de dispositivos fsicos concretos. A leitura/escrita em streams e sequencial. Uma stream funciona como a liac~ao a um canal de comunicac~ao para qualquer dispositivo (disco, teclado, ecr~a, rede, etc) Tipos: I streams de caracteres, ou streams de texto I streams de byte, ou streams binarias Utilizac~ao: I input streams leitura de dados I output streams escrita de dados Complementos de Proramac~ao e Aloritmos { LEIC

Streams em Java de \Advanced Java Networkin", Prashant Sridharan Complementos de Proramac~ao e Aloritmos { LEIC Streams em Java de \Java Network Prorammin, M. Huhes et al. Complementos de Proramac~ao e Aloritmos { LEIC

Streams em Java de \Java Network Prorammin, M. Huhes et al. Complementos de Proramac~ao e Aloritmos { LEIC Streams { classes de java.io { Classes de E/S usando streams s~ao subclasses das classes abstractas da packae java.io: I InputStream leitura de byte I OutputStreams escrita de byte I Reader leitura de caracteres I Writer escrita de caracteres Complementos de Proramac~ao e Aloritmos { LEIC

Classes da packae java.io de \POO em JAVA", F. Mario Martins Complementos de Proramac~ao e Aloritmos { LEIC Leitura do teclado { exemplo public class Consola f public static Strin lestr() f // le uma Strin int ch; Strin r = ""; while (true) f ch = System.in.read(); if (ch < 0 jj ch == 27 jj ch == 13 jj ch == 10)f //ESC ou CR if (ch == 27) f // se for ESC tem que consumir o CR/LF!! ch = System.in.read(); ch = System.in.read(); // if (ch == 13) // se for CR tem que consumir o LF!! // ch = System.in.read(); return r; else r = r + (char) ch; catch(java.io.ioexception e) freturn r; de \POO em JAVA", F. Mario Martins Complementos de Proramac~ao e Aloritmos { LEIC

Leitura do teclado (cont.) public static int leint() f // le um inteiro while(true)f tryf return Inteer.valueOf(leStr().trim()).intValue(); catch(numberformatexception e) f System.out.println("Nao e um numero inteiro!!"); public static double ledouble() f // le um Double while(true)f tryf return Double.valueOf(leStr().trim()).doubleValue(); catch(numberformatexception e) f System.out.println("Nao e um numero em VF!!"); de \POO em JAVA", F. Mario Martins Complementos de Proramac~ao e Aloritmos { LEIC Leitura do teclado (cont.) // le um booleano public static boolean lebool() f while(true)f tryf Strin s = lestr().trim().tolowercase(); if ( s.equals("true") jj s.equals("false")) return Boolean.valueOf(s).booleanValue(); else throw new IllealArumentException(""); catch(illealarumentexception e) f System.out.println("Nao e um Booleano "); de \POO em JAVA", F. Mario Martins Complementos de Proramac~ao e Aloritmos { LEIC

Leitura de Ficheiro leitura de inteiros import java.io.*; public class LerDeFicheiro f private BueredReader cheiro; private Strin linha; public void ledeficheiro(strin NomeDoFicheiro)f cheiro = new BueredReader(new FileReader(NomeDoFicheiro)); while(true)f linha = cheiro.readline(); if(linha == null)f cheiro.close(); break; System.out.println("LINHA: "+linha); catch (FileNotFoundException e) f System.out.println("Ficheiro "+NomeDoFicheiro+" nao existe"); catch(ioexception e)f System.out.println("ERRO na leitura do cheiro"); Complementos de Proramac~ao e Aloritmos { LEIC Escrita em Ficheiro { exemplo packae chapman.io; import java.io.*; import chapman.io.fmt; public class FileOut f private PrintWriter out; // referencia para PrintWriter public nal int WRITE OK = 0; // escrita com sucesso public nal int IO EXCEPTION = -999; // excepcao de E/S public int writestatus; // estado da operacao de escrita public FileOut(Strin lename)f tryf out = new PrintWriter(new BueredWriter(new FileWriter(leName,false))); catch (IOException e) fwritestatus = IO EXCEPTION; public FileOut(Strin lename, boolean append)f tryf out = new PrintWriter(new BueredWriter( new FileWriter(leName,append))); catch(ioexception e)f writestatus = IO EXCEPTION; //usae: out.printf("time = %8.2f snn",time); public void printf(strin fmt, double x) f out.print(fmt.sprintf(fmt,x)); writestatus = WRITE OK; de \Java for Enineers and Scientists", S. J. Chapman Complementos de Proramac~ao e Aloritmos { LEIC

Escrita em Ficheiro { exemplo II { //usae: out.printf("strin = %snn",s); public void printf(strin fmt, Strin s) f out.print(fmt.sprintf(fmt,s)); writestatus = WRITE OK; public void close() f out.close(); // fecha o cheiro de entrada protected void nalize() f out.close(); super.nalize(); catch(throwable e)f System.out.println("Throwable"); de \Java for Enineers and Scientists", S. J. Chapman Complementos de Proramac~ao e Aloritmos { LEIC classe File (java.io) N~ao e uma stream. Disponibiliza metodos para as habituais operac~oes sobre cheiros e directorios I isfile() testar se e cheiro I isdirectory() vericar se e directorio I etpath() caminho ate ao directorio do cheiro I lenth tamanho do cheiro I delete() remover o cheiro I renameto() mudar o nome I list() listar directorio Complementos de Proramac~ao e Aloritmos { LEIC

Sockets: exemplo de um servidor import java.net.*; import java.io.*; class Servidor f static int porta = 1234; public static void main(strin ars[]) f ServerSocket server; Socket socket; DataInputStream input; PrintStream output; Strin line; server = new ServerSocket(porta); catch(exception e) f System.err.println(\Nao posso ouvir a porta \+porta); return; while(true) f socket = server.accept(); input = new DataInputStream(socket.etInputStream()); output = new PrintStream(socket.etOutputStream()); catch(ioexception e) f System.err.println(\Erro na criacao do socketnn"+e.etmessae()); break; line = input.readline(); catch(ioexception e) f System.err.println("Erro na leitura do socket"); output.close(); continue; output.print(\recebi:nn nn"+line+"nn "); output.close(); Complementos de Proramac~ao e Aloritmos { LEIC Sockets: exemplo de um cliente import java.net.*; import java.io.*; class Cliente f static Strin maquina = "localhost"; static int porta = 1234; public static void main(strin ar[]) f Socket socket; DataInputStream input; PrintStream output; Strin line; socket = new Socket(maquina,porta); catch(exception e) f System.err.println(\Err porta \+porta+" em \+maquina); return; input = new DataInputStream(socket.etInputStream()); output = new PrintStream(socket.etOutputStream()); catch(exception e) f System.err.println(\Falhou liacao"); return; for(int i=0; i < ar.lenth; i++) output.print(ar[i]+" "); output.println(""); output.ush(); while((line=input.readline())!= null) System.out.println(line); catch(exception e) f System.err.println(\Erro I/0"); return; Complementos de Proramac~ao e Aloritmos { LEIC

Conurac~oes tpicas de streams para E-S import java.io.*; public class IOStreamDemo f public static void main(strin[] ars) throws IOException f // 1. Readin input by lines: BueredReader in = new BueredReader(new FileReader("IOStreamDemo.java")); Strin s, s2 = new Strin(); while((s = in.readline())!= null) s2 += s + "nn"; in.close(); // 1b. Readin standard input: BueredReader stdin = new BueredReader(new InputStreamReader(System.in)); System.out.print("Enter a line:"); System.out.println(stdin.readLine()); // 2. Input from memory StrinReader in2 = new StrinReader(s2); int c; while((c = in2.read())!= -1) System.out.print((char)c); // 3. Formatted memory input DataInputStream in3 = new DataInputStream( new ByteArrayInputStream(s2.etBytes())); while(true) System.out.print((char)in3.readByte()); catch(eofexception e)fsystem.err.println("eof stream"); de Rui \'Thinkin Camachoin Java", Complementos Bruce Eckel de Proramac~ao e Aloritmos { LEIC Conurac~oes tpicas de streams para E-S // 4. File output BueredReader in4 = new BueredReader(new StrinReader(s2)); PrintWriter out1 = new PrintWriter( new BueredWriter(new FileWriter("IO.out"))); int linecount = 1; while((s = in4.readline())!= null ) out1.println(linecount++ + ": " + s); out1.close(); catch(eofexception e)fsystem.err.println("eof stream"); // 5. Storin & recoverin data DataOutputStream out2 = new DataOutputStream( new BueredOutputStream(new FileOutputStream("Data.txt"))); out2.writedouble(3.14159); out2.writeutf("that was pi"); out2.writedouble(1.41413); out2.writeutf("square root of 2"); out2.close(); DataInputStream in5 = new DataInputStream(new BueredInputStream( new FileInputStream("Data.txt"))); // Must use DataInputStream for data: System.out.println(in5.readDouble()); // Only readutf() will recover the Java-UTF Strin properly: System.out.println(in5.readUTF()); // Read the followin double and Strin: System.out.println(in5.readDouble()); System.out.println(in5.readUTF()); catch(eofexception e)fsystem.err.println("eof stream"); de Rui \'Thinkin Camachoin Java", Complementos Bruce Eckel de Proramac~ao e Aloritmos { LEIC

Conurac~oes tpicas de streams para E-S // 6. Readin/writin random access les RandomAccessFile rf = new RandomAccessFile("rtest.dat", "rw"); for(int i = 0; i < 10; i++) rf.writedouble(i*1.414); rf.close(); rf = new RandomAccessFile("rtest.dat", "rw"); rf.seek(5*8); rf.writedouble(47.0001); rf.close(); rf = new RandomAccessFile("rtest.dat", "r"); for(int i = 0; i < 10; i++) System.out.println("Value " + i + ": " + rf.readdouble()); rf.close(); de \'Thinkin in Java", Bruce Eckel Complementos de Proramac~ao e Aloritmos { LEIC Compress~ao de cheiros usando GZIP import java.util.zip.*; public class GZIPcompress f public static void main(strin[] ars) throws IOException f BueredReader in = new BueredReader(new FileReader(ars[0])); BueredOutputStream out = new BueredOutputStream(new GZIPOutputStream( new FileOutputStream("test.z"))); System.out.println("Writin le"); int c; while((c = in.read())!= -1) out.write(c); in.close(); out.close(); System.out.println("Readin le"); BueredReader in2 = new BueredReader(new InputStreamReader(new GZIPInputStream( new FileInputStream("test.z")))); Strin s; while((s = in2.readline())!= null) System.out.println(s); de \'Thinkin in Java", Bruce Eckel Complementos de Proramac~ao e Aloritmos { LEIC

Serializac~ao de objectos I Permite o armazenamento e recuperac~ao de objectos em cheiros. I Permite enviar e receber objectos atraves de uma linha de comunicac~ao. Implementac~ao de persist^encia de objectos. I Usado, por exemplo, em RMI para enviar objectos a metodos remotos. I Os objectos s~ao codicados numa sequ^encia de caracteres. I E uardada a estrutura da classe juntamente com os valores dos seus membros. I Quando ha liac~oes a outros objectos as rotinas de serializac~ao automaticamente serializam os objectos referidos no objecto a serializar. I S~ao evitados ciclos de refer^encias entre objectos Complementos de Proramac~ao e Aloritmos { LEIC Serializac~ao de objectos Escrita I classe ObjectOutputStream I metodo writeobject Leitura I classe ObjectInputStream I metodo readobject I Caso a aplicac~ao queira aplicar encriptac~ao tem que sobrep^or os metodos de escrita e leitura. I usar private transient class... quando n~ao queremos a serializac~ao de um objecto. Ou ent~ao lancar uma NoAccessException Complementos de Proramac~ao e Aloritmos { LEIC

Serializac~ao de objectos import java.io.*; class Data implements Serializable f private int i; Data(int x) f i = x; public Strin tostrin() f return Inteer.toStrin(i); public class Worm implements Serializable f // Generate a random int value: private static int r() f return (int)(math.random() * 10); private Data[] d = fnew Data(r()), new Data(r()), new Data(r()); private Worm next; private char c; // Value of i == number of sements Worm(int i, char x) f System.out.println(" Worm constructor: " + i); c = x; if({i > 0) next = new Worm(i, (char)(x + 1)); Worm() f System.out.println("Default constructor"); public Strin tostrin() f Strin s = ":" + c + "("; for(int i = 0; i < d.lenth; i++) s += d[i].tostrin(); s += ")"; if(next!= null) s += next.tostrin(); return s; de \'Thinkin in Java", Bruce Eckel Complementos de Proramac~ao e Aloritmos { LEIC Serializac~ao de objectos public static void main(strin[] ars) throws ClassNotFoundException, IOException f Worm w = new Worm(6, 'a'); System.out.println("w = " + w); ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream("worm.out")); out.writeobject("worm storae"); out.writeobject(w); out.close(); // Also ushes output ObjectInputStream in = new ObjectInputStream( new FileInputStream("worm.out")); Strin s = (Strin)in.readObject(); Worm w2 = (Worm)in.readObject(); System.out.println(s + ", w2 = " + w2); ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream out2 = new ObjectOutputStream(bout); out2.writeobject("worm storae"); out2.writeobject(w); out2.ush(); ObjectInputStream in2 = new ObjectInputStream( new ByteArrayInputStream(bout.toByteArray())); s = (Strin)in2.readObject(); Worm w3 = (Worm)in2.readObject(); System.out.println(s + ", w3 = " + w3); de \'Thinkin in Java", Bruce Eckel Complementos de Proramac~ao e Aloritmos { LEIC

Possvel resultado Worm constructor: 6 Worm constructor: 5 Worm constructor: 4 Worm constructor: 3 Worm constructor: 2 Worm constructor: 1 w = :a(262) :b(100) :c(396) :d(480) :e(316) :f(398) Worm storae, w2 = :a(262) :b(100) :c(396) :d(480) :e(316) :f(398) Worm storae, w3 = :a(262) :b(100) :c(396) :d(480) :e(316) :f(398) de \'Thinkin in Java", Bruce Eckel Complementos de Proramac~ao e Aloritmos { LEIC