A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Streams Java. Sumário Streams –Emprego –Tipos –Funcionalidades –Data Sink Streams –Processing Streams –Cadeias de Streams –Classes de Streams 2.

Apresentações semelhantes


Apresentação em tema: "Streams Java. Sumário Streams –Emprego –Tipos –Funcionalidades –Data Sink Streams –Processing Streams –Cadeias de Streams –Classes de Streams 2."— Transcrição da apresentação:

1 Streams Java

2 Sumário Streams –Emprego –Tipos –Funcionalidades –Data Sink Streams –Processing Streams –Cadeias de Streams –Classes de Streams 2

3 Um programa lê / grava informações de / para um canal Em Java, um canal de onde um programa pode ler ou gravar informações é chamado de Stream Stream 3

4 Cada canal capaz de gravar em um destino de dados tem um conjunto de métodos de escrita Cada canal capaz de ler a partir de uma fonte de dados tem um conjunto de métodos leitura Quando o stream é criado só temos de invocar esses métodos Streams 4

5 Input e Output Streams Input Stream Output Stream 5

6 Na leitura: construir e abrir um stream enquanto há informações –ler as informações fechar stream Na gravação: construir e abrir um stream enquanto há informações para gravar –gravar informações fechar stream Emprego de Streams 6

7 Existem dois tipos de streams: –Streams de Bytes (classes *Stream) –Streams de Caracteres (classes *Reader ou *Writer) Tipos de Streams 7

8 Cópia de bytes 8

9 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyBytes { public static void main(String[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("xanadu.txt"); out = new FileOutputStream("outagain.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } Cópia de bytes 9

10 import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyCharacters { public static void main(String[] args) throws IOException { FileReader inputStream = null; FileWriter outputStream = null; try { inputStream = new FileReader("xanadu.txt"); outputStream = new FileWriter("characteroutput.txt"); int c; while ((c = inputStream.read()) != -1) { outputStream.write(c); } } finally { if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } Cópia de caracteres 10

11 Funcionalmente: –Data Sink (Sumidouro) Streams - conectados diretamente com a origem ou destino –Processing Streams - ligados a outros streams para proporcionar uma maior transparência de processamento (filtragem, compressão, etc.) Streams 11

12 Classes: –FileReader: lê caracteres de um arquivo. –FileWriter: grava caracteres em um arquivo. –FileInputStream: lê bytes de um arquivo. –FileOutputStream: grava bytes em um arquivo. Data Sink Streams têm apenas métodos simples de leitura / gravação –Ao criar streams Data Sink temos de especificar a fonte Para arquivos: o nome do arquivo Para a rede: o socket A partir de memória: a localização Data Sink Streams 12

13 Processing Streams –Quando se cria um processing stream, temos de especificar a qual stream estará ele ligado Alguns processing streams: –DataInputStream, DataOutputStream, BufferedWriter, BufferedReader, etc.. Como fazer: –Ligar a um Datastream um FileStream para gravar / ler outros tipos de dados que não sejam bytes –Ligar a um BufferStream a um NetworkStream para bufferizar o acesso à rede Processing Streams 13

14 Cópia de linhas (com bufferização) 14

15 –Quando tudo estiver configurado e se desejar gravar um número real em um Data Stream (invocar qualquer método de gravar): O programa pede ao data stream para gravar algo O data stream obtém um conjunto de bytes e os grava no buffer stream O buffer stream retém os bytes até que decida a gravá-los, de uma só vez, no file stream O file stream efetivamente grava os bytes no arquivo destino sempre que os receber do buffer stream Cadeias de Streams 15

16 Para cada tipo existe um InputStream (byte) ou Reader (char) e um OutputStream (byte) ou Reader (char) As classes Stream podem ter sub classes –Pode-se criar seus próprios streams para serem incluído em uma cadeia Para isto é preciso: –Criar o construtor da classe aceitando um Stream –Adaptar-se aos métodos de leitura / gravação e implementar as funcionalidades desejadas nesses métodos Classes de Streams 16

17 As classes base partir do qual derivam os novos processing streams são: –FilterOutputStream –FilterInputStream –FilterReader –FilterWriter Criação de processing streams 17

18 A classe InputStreamReader le bytes e os decodifica em caracteres Cada invocação do método read() de InputStreamReader's le um ou mais bytes da entrada Para maior eficiência é conveniente encapar a classe InputStreamReader por uma classe BufferedReader. BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); A classe RamdomAccessFile permite leitura e gravação de modo aleatório em arquivos de acesso direto Um ponteiro, posicionado pelo método seek(), indica o ponto de leitura 18 Classes para acesso a arquivos

19 File file = new File("RandomAccessFileExample.out"); RandomAccessFile raf = new RandomAccessFile(file, "rw"); // Ler primeiro caractere do arquivo byte ch = raf.readByte(); System.out.println(Ler primeiro caractere: " + (char)ch); // Incluir registro no final do arquivo raf.write(0x0A); raf.writeBytes(Exemplo terminado"); 19 Declaração de classe para acesso direto

20 Exemplo 1 (acesso direto) FileInputStream stream = new FileInputStream("../EDIIA32.txt"); InputStreamReader streamReader = new InputStreamReader(stream); BufferedReader reader = new BufferedReader(streamReader); RandomAccessFile raf = new RandomAccessFile (new File("../AcessoDireto.dsk"), "rw"); arq.read(stringData); arq.writeInt(mpr_periodo); Exemplo 2 (acesso seqüencial) private static InputStreamReader is = new InputStreamReader( System.in ); private static BufferedReader br = new BufferedReader( is ); BufferedReader in = new BufferedReader( new InputStreamReader( new FileInputStream ( new File(".\\dados\\ARQ9502.DAT")))); while (in.ready()) { linha = in.readLine(); 20 Exemplos de acessos a arquivos


Carregar ppt "Streams Java. Sumário Streams –Emprego –Tipos –Funcionalidades –Data Sink Streams –Processing Streams –Cadeias de Streams –Classes de Streams 2."

Apresentações semelhantes


Anúncios Google