java básico :: stream

28
Java Básico Java I/O com Stream Prof. Wesley R. Bezerra

Upload: wesley-r-bezerra

Post on 09-Jul-2015

107 views

Category:

Education


3 download

DESCRIPTION

Material do curso de Java Básico da WBezerra. Como utilizar Streams em Java e quais as implementações deste recurso são fornecidas pelo sdk.

TRANSCRIPT

Page 1: Java Básico :: Stream

Java Básico Java I/O com Stream

Prof. Wesley R. Bezerra

Page 2: Java Básico :: Stream

Roteiro

• O que é stream?

• As interfaces de I/O

• Principais subclasses

• Exercício

• Conclusão

Page 3: Java Básico :: Stream

Objetivo

• Conhecer melhor a hierarquia de classes que trabalham com stream

Page 4: Java Básico :: Stream

O que é stream?

• Stream é um modo de comunicação de dados, através de um fluxo de bytes. A palavra stream significa corrente, torrente, canal.

Page 5: Java Básico :: Stream

As interfaces de I/O

• Existem duas interfaces padrões no topo da hierarquia das classes utilizadas para trabalhar com stream. São elas:

InputStream

• Utilizada para que o programa tenha um stream de entrada de dados

OutputStream

• Utilizada para que o programa tenho um stream de saida de dados.

• Obs: out e in são sempre do ponto de vista do programa, não do recurso.

Page 6: Java Básico :: Stream
Page 7: Java Básico :: Stream

Principais subclasses

de InputStream

• ByteArrayInputStream

• FileInputStream

• FilterInputStream

• BufferedInputStream

• DataInputStream

• PushbackInputStream

• ObjectInputStream

• PipedInputStream

• SequenceInputStream

Page 8: Java Básico :: Stream

ByteArrayInputStream

• Esta classe contem um buffer interno que armazena os bytes que podem ser lidos da stream. Um contador interno manter a referencia para o próximo byte a ser fornecido para o método read.

Page 9: Java Básico :: Stream

FileInputStream

• É uma classe utilizada para obter entradas de byte de um arquivo no file system. Ele poderá ler os arquivos de acordo com o ambiente onde deve será utilizado.

Page 10: Java Básico :: Stream

FilterInputStream

• É uma classe que contem algum outro stream de entrada, o qual é utilizado como sua fonte básica de dados, possibilitando a transformação dos dados ao longo do caminho ou provendo funcionalidades adicionais.

Page 11: Java Básico :: Stream

BufferedInputStream

• Esta classe adiciona funcionalidade a outro stream de entrada, a habilidade para fazer um buffer da entrada para suporte a métodos para marcação e reset.

• Quando o BufferedInputStream é criado, um buffer array interno também é criado.

Page 12: Java Básico :: Stream

DataInputStream

• Uma classe deste tipo permite a aplicação ler dados de tipos primitivos de um stream de entrada subjacente de um modo independente de maquina.

Page 13: Java Básico :: Stream

PushbackInputStream

• Esta classe adiciona funcionalidades a outro stream de entrada, isto é, a habilidade para “pushback” ou “unread” um byte.

• Isto é útil em situações onde é conveniente a um fragmento de código ler um numero indefinido de bytes que são delimitados por um byte de valor particular; depois de ler o byte de finalização, o fragmento de código pode “unread” (“des-ler”) este, então a próxima operação pode ler novamente o byte que foi devolvido.

Page 14: Java Básico :: Stream

ObjectInputStream

• Esta classe desserializa dados primitivos e objetos preveamente escritos utilizando um ObjectOutputStream.

• ObjectOutputStream e ObjectInputStream podem prover a aplicação meios de persistir seus objetos.

Page 15: Java Básico :: Stream

PipedInputStream

• Esta classe deve ser conectada a um PipedInputStream; o stream de entrada piped entao prove qualquer byte de dado que seja escrito no stream de saida piped.

• Tipicamente, os dados são lidos do objeto PipedInputStream por uma thread e os dados no PipedOutputStream correspondentes são escritos por outra.

Page 16: Java Básico :: Stream

SequenceInputStream

• Esta classe representa uma concatenação lógica de outros streams de entrada.

• Inicia com uma coleção ordenada de streams de entrada e leitores do inicio ate o fim do arquivo ser atingido, após isto lê do segundo e assim por diante, ate o fim do arquivo ser achado no ultimo stream de entrada contido.

Page 17: Java Básico :: Stream

Principais interfaces de

OutputStream

• ByteArrayOutputStream

• FileOutputStream

• FilterOutputStream

• BufferedOutputStream

• DataOutputStream

• PrintStream

• ObjectOutputStream

• PipedOutputStream

Page 18: Java Básico :: Stream

ByteArrayOutputStrea

m

• Esta classe implementa um stream de saída no qual os dados são escritos em um array de bytes. O buffer cresce automaticamente de acordo com a escrita dos dados. Os dados podem ser resgatados utilizando toByteArray() e toString();

Page 19: Java Básico :: Stream

FileOutputStream

• É a classe utilizada para escrever dados em um arquivo(File) ou em um descritor de arquivo (FileDescriptor).

Page 20: Java Básico :: Stream

FilterOutputStream

• É a superclasse de todos os streams de saída com filtros. Este stream é utilizado sobre um stream de saída o qual é usado como escoadouro de dados, mas possibilitando a transformar os dados ao longo do caminho ou provendo funcionalidades adicionais.

Page 21: Java Básico :: Stream

BufferedOutputStream

• Através desta classe uma aplicação pode ler bytes de outro stream de saída sem precisar fazer uma chamada no sistema para cada byte escrito.

Page 22: Java Básico :: Stream

DataOutputStream

• Esta classe permite a aplicação escrever dados dos tipos primitivos do java, um stream de saída “portável”.

• Uma aplicação pode então usar um DataInputStream para ler os dados novamente.

Page 23: Java Básico :: Stream

PrintStream

• Esta classe adiciona a outro stream de saída a funcionalidade de imprimir representações de vários valores de dados.

Page 24: Java Básico :: Stream

ObjectOutputStream

• Esta classe escreve tipos de dados primitivos e objetos em um stream de saída. Os objetos podem ser lidos (reconstituídos) usando um ObjectInputStream.

Page 25: Java Básico :: Stream

PipedOutputStream

• Um stream de saída piped pode ser conectado a um stream de entrada para criar uma comunicação “conectada”.

• Para entender melhor leia o slide de PipedInputStream.

Page 26: Java Básico :: Stream

Exercício

• Faça um programa que serialize objetos e os salve em disco.

• Faça um socket que envie dados primitivos e que possa ser utilizado por um socket em outra linguagem.

• Para que serve um PipedInputStream e um PipedOutputStream?

Page 27: Java Básico :: Stream

Conclusão

• Existem muitas diferente classes dentro da hierarquia do InputStream e OutputStream, é sempre bom conhecermos melhor as suas características individuais para saber quando é melhor utilizar uma ou outra subclasse.

Page 28: Java Básico :: Stream

Obrigado

Perguntas e sugestões

[email protected]