Reader e Writer para streams de caracteres (texto).

Documentos relacionados
Reader e Writer para streams de caracteres (texto).

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

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

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

Objetivos deste capítulo

Programação Java. Entrada & Saída

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

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

Gravação de objetos em arquivos

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

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

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

Hierarquia de classes. Veja as diversas classes do pacote

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

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

Streams e Ficheiros I/O

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

Linguagem de programação Arquivos e tratamento de erros

Manipulando Arquivos em Java

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

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

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

Java Standard Edition (JSE)

Unidade VIII Persistência de Dados em Java

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

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

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

Manipulação de Arquivos

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

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.

RMS. Record Management System

Aula 11 POO 1 Coleções e Arquivos. Profa. Elaine Faria UFU

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

Laboratório de Programação

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

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

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

Tratamento de Exceções

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

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)

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

Linguagem de programação Java

Programação Orientada a Objetos

Streams. Profa. Patrícia A. Jaques Unisinos

ESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java.

4 Conceito de Herança

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

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

ALOCAÇÃO DINÂMICA DE MEMÓRIA

Java Avançado. Carga Horária: 32 horas. Conteúdo Programático: Classes. Classes internas; Instância da classe interna; Referências na classe interna;

Resumo das Propriedades de UDP e de TCP

Tipos, Literais, Operadores

Tipos, Literais, Operadores

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

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

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

Java - Introdução à Linguagem

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

Lição 7 Array em Java

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

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

Programação Orientada por Objectos 2007/2008

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

LSD LSD PICC. Manuela Sousa

Streams. Streams. Tipos: Utilizac~ao:

Threads e IO. Sérgio Luiz Ruivace Cerqueira

Programação Na Web. Servlets: Ciclo de Vida. Agenda. Visão geral sobre ciclo de vida. Nascimento de uma Servlet. Execução de uma Servlet

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

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

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

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

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

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

9 Classes Abstractas e Interfaces

Strings e Arrays POO

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

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça

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

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

Tratamento de Exceções

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

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

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

Coleções POO. Prof. Marcio Delamaro

Sockets e Threads em Java

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

CETEC Centro Paula Souza

Programação orientada a objetos em Java

Ficha Prática 10. António Nestor Ribeiro, Paulo Azevedo, Mário Martins PPIV (LESI) 2005/06

Sumário. Ficheiros. Ficheiros

Introdução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++.

Ciclo de vida; Funcionamento; Requisições e Respostas.

ESQUEMA AULA PRÁTICA 1

Transcrição:

Folha 1-1 Recordando POO: Streams Uma stream é uma abstracção que representa uma fonte genérica de entrada de dados ou um destino genérico para escrita de dados que é definida independentemente do dispositivo físico concreto. Todas as classes que implementam streams em Java são subclasses das classes abstractas InputStream e OutputStream para streams de bytes e das classes abstractas Reader e Writer para streams de caracteres (texto). A hierarquia de algumas dessas classes é a seguinte: OutpuStream ByteArrayOutputStream FileOutpuStream FilterOutputStream BufferedOutputStream DataOutputStream PipedOutputStream ObjectOutputStream InputStream ByteArrayInputStream FileInputStream FilterInputStream BufferedInputStream DataInputStream PipedInputStream ObjectInputStream Writer BufferedWriter LineNumberWriter PrintWriter OutputStreamWriter FileWriter PipedWriter StringWriter CharArrayWriter Reader BufferedReader LineNumberReader InputStreamReader FileReader PipedReader StringReader CharArrayReader Streams de caracteres As subclasses de Writer têm que implementar os métodos definidos nesta classe abstracta, nomeadamente, write(string s), write (int c); write(char[] b); flush(), close(),... Analogamente as subclasses de Reader têm que implementar, entre outros, os métodos int read() int read(char[] c); close(),...

Folha 1-2 As classes FileReader e FileWriter Construtores: FileReader (File file); FileReader (String filename);... FileWriter (File file); FileWriter (String filename);... As classes FileReader e FileWriter permitem-nos respectivamente ler e escrever caracteres em objectos do tipo File. No entanto a leitura e a escrita de um carácter de cada vez não é geralmente a forma mais eficiente de manipular ficheiros de texto. As classes BufferedReader e BufferedWriter possuem métodos para leitura e escrita linha a linha. As classes BufferedReader e BufferedWriter Construtores: BufferedReader (Reader in) BufferedWriter (Writer out) 1 Teste a classe abaixo. public class c1 { public static void main (String args[]){ BufferedWriter bw; bw = new BufferedWriter ( new FileWriter ("d:\\my_work\\teste1.txt")); bw.write( 1 ); bw.newline(); bw.write( 2 ); bw.flush(); bw.close(); catch (IOException e){ System.out.println(e.getMessage()); A principal vantagem da classe BufferedWriter é que esta realiza escritas optimizadas sobre streams (de caracteres) através de um mecanismo de buffering. Os dados vão sendo armazenados num buffer intermédio sendo a escrita na stream de destino apenas efectuada quando se atinge o máximo da capacidade do buffer.

Folha 1-3 Como vimos acima, o construtor da classe BufferedWriter recebe como argumento um objecto da classe Writer, o que significa que uma instância da classe BufferedWriter pode ser definida sobre qualquer subclasse da classe Writer, sempre que for necessário optimizar operações de escrita pouco eficientes. Simetricamente uma classe BufferedReader pode ser definida sobre qualquer subclasse da classe Reader. 2 - Crie uma classe que leia o ficheiro teste1.txt. A classe PrintWriter Construtores: PrintWriter(OutputStream out); PrintWriter(OutputStream out, boolean autoflush) PrintWriter(Writer out); PrintWriter(Writer out, boolean autoflush) As instâncias de PrintWriter podem ser criadas sobre qualquer subclasse de Writer e também sobre uma qualquer stream de bytes (subclasses de OutputStream) Esta classe define os métodos print() e println() que recebem como parâmetro um valor de qualquer tipo simples. 3 Teste a classe abaixo. public class c2 { public static void main (String args[]){ PrintWriter pw; pw = new PrintWriter ( new FileWriter ("d:\\my_work\\teste2.txt")); pw.println(2.31); pw.println(false); pw.print("x"); pw.flush(); pw.close(); catch (IOException e){ System.out.println(e.getMessage()); 4 - Crie uma classe que leia o ficheiro teste2.txt.

Folha 1-4 Streams de bytes As subclasses de OutputStream e InputStream implementam Streams de bytes. Os métodos abstractos definidos na classe OutputStream são idênticos aos de Writer com a diferença de que em vez de caracteres aceitam bytes. As classes DataOutputStream e DataInputStream Estas classes são úteis para escrever/ler tipos primitivos de dados. Possuem métodos de leitura e escrita para cada um dos tipos primitivos de dados. Construtores: DataOutputStream(OutputStream out); DataInputStream(InputStream in) 5 Teste o código abaixo e seguidamente construa uma classe que leia o ficheiro teste6.dat public static void main (String args[]){ DataOutputStream os; os = new DataOutputStream ( new FileOutputStream("d:\\My_work\\teste3.dat")); os.writedouble(2.335); os.writeint(33); os.writeutf("xpto"); //Unicode Text Format os.flush(); os.close(); catch (IOException e){ System.out.println(e.getMessage()); 6 - Crie uma classe que leia o ficheiro teste3.dat. As classes ObjectInputStream e ObjectOutputStream Construtores: ObjectInputStream(InputStream in) ObjectOutputStream(OutputStream out) Uma ObjectOutputStream permite armazenar objectos através do método writeobject() que implementa um algoritmo de serialização que garante que todas as referências cruzadas existentes entre instâncias de diferentes classes serão repostas aquando do processo de leitura dessas mesmas instâncias.

Folha 1-5 Para que se possam gravar instâncias de uma determinada classe numa ObjectOutputStream é necessário que a classe implemente a interface Serializable. Além disso, todas as variáveis dessa classe terão que ser também serializáveis. Isto significa que todas as variáveis de instância da classe devem por sua vez pertencer a classes serializáveis. Os tipos simples são por definição serializáveis, assim como o são os arrays e as instâncias das classes String, Vector ou ArrayList. 7 Construa uma classe à sua escolha definindo os atributos e construindo os getters e setters de forma automática no netbeans. 8 - Construa um programa de teste que instancie vários objetos da classe anterior e escreva esses objetos num ficheiro. Use ObjecStreams. 9 Construa um programa para ler o ficheiro criado no exercício anterior. A classe InetAddress 10 O programa abaixo permite-lhe obter o nome da máquina onde está a trabalhar. Implemente-o e explore a classe InetAddress. import java.net.*; public class GetName { public static void main (String args[]) throws Exception{ InetAddress host = null; host = InetAddress.getLocalHost(); System.out.println(host.getHostName()); 11 O programa abaixo permite-lhe obter o endereço IP da máquina onde está a trabalhar. Implemente-o e estude o seu comportamento. import java.net.*;

public class GetIP { public static void main (String args[]) throws Exception{ InetAddress host = null; host = InetAddress.getLocalHost(); byte ip [] = host.getaddress(); for ( int i= 0 ; i < ip.length; i++){ if (i>0) System.out.print("."); System.out.print(ip[i] & 0xff); System.out.println(); Folha 1-6 12 Pretende-se que o programa abaixo, dado um determinado IP, nos diga qual o nome da máquina correspondente. Complete-o. import java.net.*; import java.io.*; public class IPtoName { public static void main (String args[] ) throws IOException{ String s=" "; char c; System.out.print("IP address? "); while ( (c=(char)system.in.read())!= 10) s+=c; s=s.trim(); InetAddress address =null; < exercício > catch (UnknownHostException e){ System.out.println("IP malformed "); 13 Construa um programa que dado o nome de uma máquina, nos diga qual o IP correspondente.