84
http://publicationslist.org/junio Java Streams (e arquivo) Prof. Jose Fernando Rodrigues Junior http://www.icmc.usp.br/~junio [email protected] INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO - USP SCC0504 - Programação Orientada a Objetos

Java streams

Embed Size (px)

Citation preview

Page 1: Java streams

http://publicationslist.org/junio

Java Streams (e arquivo)Prof. Jose Fernando Rodrigues Juniorhttp://www.icmc.usp.br/~junio

[email protected]

INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO - USP

SCC0504 - Programação Orientada a Objetos

Page 2: Java streams

http://publicationslist.org/junio

• O conceito de streams se refere a uma analogia à água deum rio, o que seria equivalente aos dados que passam porum canal de comunicação

• stream (substantivo): pequeno rio, riacho, córrego(wordreference.com)

• A maior diferença é que a água nos aguarda antes de fluir, eque a fonte de água não é indeterminada

• O conceito se tornou bastante usado em toda a computaçãona década de 90, sendo usado em diversas linguagens deprogramação

Introdução

Page 3: Java streams

http://publicationslist.org/junio

• Streams podem se referir aos dados que fluem de diversasfontes distintas: arquivos, conexões de rede, entrada padrãode dados (teclado), ou mesmo a memória

• Streams não podem ser navegadas para frente e para trás, etambém não possuem ponteiros para posição do arquivo

• Para casos assim, usa-se a classe RandomAccessFile, entreoutras

• Streams se baseiam no fluxo unidirecional de bytes, decharacteres, de objetos, entre outras prossibilidades

Introdução

Page 4: Java streams

http://publicationslist.org/junio

A classe File

Page 5: Java streams

http://publicationslist.org/junio

• File é uma classe que permite gerenciar arquivos

• Ela abstrai os metadados de um dado arquivo ou diretório,como seu caminho, tamanho, e permissões de acesso

Exemplo:

File fonte = new File(“Poo.dat”);if(fonte.exists( )){

if((!fonte.isHidden()) && (!fonte.isDirectory( ))){if(fonte.canRead( ) && fonte.canWrite( )){

//caminho considerando o directório correnteSystem.out.println(fonte.getPath( ));//caminho completo que pode ser um soft link (atalho do SO)System.out.println(fonte.getAbsolutePath( ));//caminho completo como considerado pelo sistema de arquivosSystem.out.println(fonte.getCanonicalPath( ));System.out.println(fonte.lenght( ));fonte.delete( );

}}

}

Classe File

Page 6: Java streams

http://publicationslist.org/junio

• File é uma classe que permite gerenciar arquivos

• Ela abstrai os metadados de um dado arquivo ou diretório,como seu caminho, tamanho, e permissões de acesso

Exemplo:

File fonte = new File("c:\\system");if(fonte.isDirectory( )){

File[] files = fonte.listFiles();for(int i = 0; i < files.length; i++)

System.out.println(files[i].getName());}fonte.renameTo(new File(“c:\\system64”));

Classe File

Page 7: Java streams

http://publicationslist.org/junio

Leitura de bytes

Page 8: Java streams

http://publicationslist.org/junio

• Exemplo:

File-FileInputStream

Page 9: Java streams

http://publicationslist.org/junio

• Exemplo:

File tanque = new File(“agua.txt”);

tanque(File)

File-FileInputStream

Page 10: Java streams

http://publicationslist.org/junio

• Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);

cano(FileInputStream)

tanque(File)

File-FileInputStream

Page 11: Java streams

http://publicationslist.org/junio

• Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);byte[ ] balde = new byte[64]; /*BUFFER*/

cano(FileInputStream)

tanque(File)

balde(byte[64])

File-FileInputStream

Page 12: Java streams

http://publicationslist.org/junio

• Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);byte[ ] balde = new byte[64]; /*BUFFER*/cano.read(balde);

cano(FileInputStream)

tanque(File)

balde(byte[64])

01011001101100101010101010111100

File-FileInputStream

Page 13: Java streams

http://publicationslist.org/junio

• Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);byte[ ] balde = new byte[64]; /*BUFFER*/cano.read(balde);

cano(FileInputStream)

tanque(File)

balde(byte[64])

01011001101100101010101010111100

File-FileInputStream

Page 14: Java streams

http://publicationslist.org/junio

• Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);byte[ ] balde = new byte[64]; /*BUFFER*/cano.read(balde);System.out.println("CANO (64 bytes): " + balde);

cano(FileInputStream)

tanque(File)

File-FileInputStream

01011001101100101010101010111100

System.out(PrintStream)

Page 15: Java streams

http://publicationslist.org/junio

• Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);byte[ ] balde = new byte[64]; /*BUFFER*/cano.read(balde);System.out.println("CANO (64 bytes): " + balde);

cano(FileInputStream)

tanque(File)

File-FileInputStream

01011001101100101010101010111100

System.out(PrintStream)

Como se vê, os streams do Java funcionam segundoum sistema de pipeline (tubulação) – um mecanismofornece os dados para a próxima etapa,sucessivamente.

Page 16: Java streams

http://publicationslist.org/junio

Copiando um arquivo

Page 17: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:

File-FileInputStream-FileOutputStream

Page 18: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:File fonte = new File(nomeFonte);File destino = new File(nomeDestino);

File-FileInputStream-FileOutputStream

destino(File)

fonte(File)

Page 19: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:File fonte = new File(nomeFonte);File destino = new File(nomeDestino);FileInputStream canoIn = new FileInputStream(fonte);FileOutputStream canoOut = new FileOutputStream(destino);

File-FileInputStream-FileOutputStream

canoOut(FileOutputStream)

destino(File)

fonte(File) canoIn

(FileInputStream)

Page 20: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:File fonte = new File(nomeFonte);File destino = new File(nomeDestino);FileInputStream canoIn = new FileInputStream(fonte);FileOutputStream canoOut = new FileOutputStream(destino);byte[] balde = new byte[8192]; /*2^13 bytes de buffer*/

File-FileInputStream-FileOutputStream

canoOut(FileOutputStream)

destino(File)

fonte(File) canoIn

(FileInputStream)

balde(byte[8192])

Page 21: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:File fonte = new File(nomeFonte);File destino = new File(nomeDestino);FileInputStream canoIn = new FileInputStream(fonte);FileOutputStream canoOut = new FileOutputStream(destino);byte[] balde = new byte[8192]; /*2^13 bytes de buffer*/int length = canoIn.read(balde);

File-FileInputStream-FileOutputStream

canoOut(FileOutputStream)

destino(File)

fonte(File) canoIn

(FileInputStream)

balde(byte[8192])

balde

01011001101100101010101010111100

Page 22: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:File fonte = new File(nomeFonte);File destino = new File(nomeDestino);FileInputStream canoIn = new FileInputStream(fonte);FileOutputStream canoOut = new FileOutputStream(destino);byte[] balde = new byte[8192]; /*2^13 bytes de buffer*/int length = canoIn.read(balde);while (length != -1) {

canoOut.write(balde, 0, length);length = canoIn.read(balde);

}

File-FileInputStream-FileOutputStream

canoOut(FileOutputStream)

destino(File)

fonte(File) canoIn

(FileInputStream)

balde(byte[8192])

Page 23: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:File fonte = new File(nomeFonte);File destino = new File(nomeDestino);FileInputStream canoIn = new FileInputStream(fonte);FileOutputStream canoOut = new FileOutputStream(destino);byte[] balde = new byte[8192]; /*2^13 bytes de buffer*/int length = canoIn.read(balde);while (length != -1) {

canoOut.write(balde, 0, length);length = canoIn.read(balde);

}

File-FileInputStream-FileOutputStream

canoOut(FileOutputStream)

fonte(File) canoIn

(FileInputStream)

balde(byte[8192])

destino(File)

Page 24: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:File fonte = new File(nomeFonte);File destino = new File(nomeDestino);FileInputStream canoIn = new FileInputStream(fonte);FileOutputStream canoOut = new FileOutputStream(destino);byte[] balde = new byte[8192]; /*2^13 bytes de buffer*/int length = canoIn.read(balde);while (length != -1) {

canoOut.write(balde, 0, length);length = canoIn.read(balde);

}

File-FileInputStream-FileOutputStream

canoOut(FileOutputStream)

fonte(File) canoIn

(FileInputStream)

balde(byte[8192]) destino

(File)

Page 25: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:File fonte = new File(nomeFonte);File destino = new File(nomeDestino);FileInputStream canoIn = new FileInputStream(fonte);FileOutputStream canoOut = new FileOutputStream(destino);byte[] balde = new byte[8192]; /*2^13 bytes de buffer*/int length = canoIn.read(balde);while (length != -1) {

canoOut.write(balde, 0, length);length = canoIn.read(balde);

}

File-FileInputStream-FileOutputStream

canoOut(FileOutputStream)

fonte(File) canoIn

(FileInputStream)

balde(byte[8192])

destino(File)

Page 26: Java streams

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:File fonte = new File(nomeFonte);File destino = new File(nomeDestino);FileInputStream canoIn = new FileInputStream(fonte);FileOutputStream canoOut = new FileOutputStream(destino);byte[] balde = new byte[8192]; /*2^13 bytes de buffer*/int length = canoIn.read(balde);while (length != -1) {

canoOut.write(balde, 0, length);length = canoIn.read(balde);

}canoIn.close();canoOut.close();

File-FileInputStream-FileOutputStream

fonte(File)

destino(File)

balde(byte[8192])

Page 27: Java streams

http://publicationslist.org/junio

Leitura de bytes como caracteres

Page 28: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File-FileInputStream-InputStreamReader

Page 29: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);

tanque(File)

File-FileInputStream-InputStreamReader

Page 30: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);

cano(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader

Page 31: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);

filtro(InputStreamReader )

cano(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader

Page 32: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);char[ ] balde = new char[64]; /*BUFFER*/

File-FileInputStream-InputStreamReader

filtro(InputStreamReader )cano

(FileInputStream)

tanque(File)

balde(char[64])

Page 33: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);char[ ] balde = new char[64]; /*BUFFER*/filtro.read(balde);

p r og r am a ca o .

File-FileInputStream-InputStreamReader

filtro(InputStreamReader )cano

(FileInputStream)

tanque(File)

balde(char[64])

Page 34: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);char[ ] balde = new char[64]; /*BUFFER*/filtro.read(balde);

filtro(InputStreamReader )cano

(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader

balde(char[64])

p r og r am a ca o .

Page 35: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);char[ ] balde = new char[64]; /*BUFFER*/filtro.read(balde);System.out.println("CANO (64 chars): " + balde);

filtro(InputStreamReader )cano

(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader

System.out(PrintStream)

Page 36: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);char[ ] balde = new char[64]; /*BUFFER*/filtro.read(balde);System.out.println("CANO (64 chars): " + balde);

filtro(InputStreamReader )cano

(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader

System.out(PrintStream)

Os readers do Java interpretam os dados como caracteres enão como bytes.

Entre eles: BufferedReader, CharArrayReader, FilterReader,InputStreamReader, PipedReader, StringReader

Page 37: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File-FileInputStream-InputStreamReader-BufferedReader

Page 38: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);

tanque(File)

File-FileInputStream-InputStreamReader-BufferedReader

Page 39: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);

cano(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader-BufferedReader

Page 40: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);

filtro(InputStreamReader )cano

(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader-BufferedReader

Page 41: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);BufferedReader decantador = new BufferedReader(filtro);//BUFFER

decantador(BuffereReader)

filtro(InputStreamReader )cano

(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader-BufferedReader

Page 42: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);BufferedReader decantador = new BufferedReader(filtro);//BUFFERString balde = decantador.readLine();

decantador(BuffereReader)

filtro(InputStreamReader )cano

(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader-BufferedReader

balde(String)

“Estruturas de dados \n”

Page 43: Java streams

http://publicationslist.org/junio

• Leitores específicos fornecem os dados de diferentesmaneiras. Exemplo:

File tanque = new File(“agua.txt”);FileInputStream cano = new FileInputStream(tanque);InputStreamReader filtro = new InputStreamReader(cano);BufferedReader decantador = new BufferedReader(filtro);//BUFFERString balde = decantador.readLine();System.out.println(balde);

decantador(BuffereReader)

filtro(InputStreamReader )cano

(FileInputStream)

tanque(File)

File-FileInputStream-InputStreamReader-BufferedReader

System.out(PrintStream)

Page 44: Java streams

http://publicationslist.org/junio

Escrita/leitura de objetos

Page 45: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File-FileOutputStream-ObjectOutputStream

Page 46: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();

File-FileOutputStream-ObjectOutputStream

tanque(File)

Page 47: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);

File-FileOutputStream-ObjectOutputStream

tanque(File)

canoOut(FileOutputStream)

Page 48: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);

File-FileOutputStream-ObjectOutputStream

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream )

Page 49: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");

t

c

File-FileOutputStream-ObjectOutputStream

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream )

Page 50: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");

t

c

File-FileOutputStream-ObjectOutputStream

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream )

• Atenção: qualquer classe escrita em Java pode serserializada, para isso ela tem que implementar a InterfaceSerializable.

• A Interface Serializable é uma “tagging interface”, ela nãopossui nenhum método e nenhum atributo. Ela apenas tipificauma dada classe indicando que ela pode ser escrita como umasequência de bytes.

Page 51: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);

t

c

File-FileOutputStream-ObjectOutputStream

tanque(File)canoOut

(FileOutputStream)

serializador(ObjectOutputStream )

Page 52: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);serializador.writeObject(t);

ttanque(File)

File-FileOutputStream-ObjectOutputStream

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream )

Page 53: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);serializador.writeObject(t);

tanque(File)

File-FileOutputStream-ObjectOutputStream

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream )

Page 54: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);serializador.writeObject(t);FileInputStream canoIn = new FileInputStream(tanque);

File-FileInputStream-ObjectInputStream

tanque(File)

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream ) canoIn

(FileInputStream)

Page 55: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);serializador.writeObject(t);FileInputStream canoIn = new FileInputStream(tanque);ObjectInputStream deserializador = new ObjectInputStream(canoIn);

tanque(File)

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream )

deserializador(ObjectInputStream )canoIn

(FileInputStream)

File-FileInputStream-ObjectInputStream

Page 56: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);serializador.writeObject(t);FileInputStream canoIn = new FileInputStream(tanque);ObjectInputStream deserializador = new ObjectInputStream(canoIn);c = (Circulo) deserializador.readObject();

tanque(File)

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream )

deserializador(ObjectInputStream )canoIn

(FileInputStream)

c

File-FileInputStream-ObjectInputStream

Page 57: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);serializador.writeObject(t);FileInputStream canoIn = new FileInputStream(tanque);ObjectInputStream deserializador = new ObjectInputStream(canoIn);c = (Circulo) deserializador.readObject();t = (Triangulo) deserializador.readObject();

tanque(File)

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream )

deserializador(ObjectInputStream )canoIn

(FileInputStream) t

c

File-FileInputStream-ObjectInputStream

Page 58: Java streams

http://publicationslist.org/junio

• Também é possível fazer stream com instâncias de objetos,lendo e escrevendo objetos inteiros em arquivo serialização. Exemplo:

File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);ObjectOutputStream serializador = new ObjectOutputStream(canoOut);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);serializador.writeObject(t);FileInputStream canoIn = new FileInputStream(tanque);ObjectInputStream deserializador = new ObjectInputStream(canoIn);c = (Circulo) deserializador.readObject();t = (Triangulo) deserializador.readObject();

tanque(File)

tanque(File)

canoOut(FileOutputStream)

serializador(ObjectOutputStream )

deserializador(ObjectInputStream )canoIn

(FileInputStream)

t

c

File-FileInputStream-ObjectInputStream

Page 59: Java streams

http://publicationslist.org/junio

Escrita de objetos com compactação

Page 60: Java streams

http://publicationslist.org/junio

• Pode-se também usar compactação. Exemplo:

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

Page 61: Java streams

http://publicationslist.org/junio

• Pode-se também usar compactação. Exemplo:File tanque = new File(“POO.dat”);tanque.createNewFile();

tanque(File)

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

Page 62: Java streams

http://publicationslist.org/junio

• Pode-se também usar compactação. Exemplo:File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

tanque(File)canoOut

(FileOutputStream)

Page 63: Java streams

http://publicationslist.org/junio

• Pode-se também usar compactação. Exemplo:File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);GZIPOutputStream compactador = new GZIPOutputStream(canoOut);

tanque(File)canoOut

(FileOutputStream)compactador

(GZIPOutputStream)

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

Page 64: Java streams

http://publicationslist.org/junio

• Pode-se também usar compactação. Exemplo:File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);GZIPOutputStream compactador = new GZIPOutputStream(canoOut);ObjectOutputStream serializador = new ObjectOutputStream(compactador);

tanque(File)canoOut

(FileOutputStream)serializador

(ObjectOutputStream )

compactador(GZIPOutputStream)

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

Page 65: Java streams

http://publicationslist.org/junio

• Pode-se também usar compactação. Exemplo:File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);GZIPOutputStream compactador = new GZIPOutputStream(canoOut);ObjectOutputStream serializador = new ObjectOutputStream(compactador);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");

t

ctanque(File)canoOut

(FileOutputStream)serializador

(ObjectOutputStream )

compactador(GZIPOutputStream)

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

Page 66: Java streams

http://publicationslist.org/junio

• Pode-se também usar compactação. Exemplo:File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);GZIPOutputStream compactador = new GZIPOutputStream(canoOut);ObjectOutputStream serializador = new ObjectOutputStream(compactador);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);

t

ctanque(File)canoOut

(FileOutputStream)serializador

(ObjectOutputStream )

compactador(GZIPOutputStream)

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

Page 67: Java streams

http://publicationslist.org/junio

• Pode-se também usar compactação. Exemplo:File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);GZIPOutputStream compactador = new GZIPOutputStream(canoOut);ObjectOutputStream serializador = new ObjectOutputStream(compactador);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);serializador.writeObject(t);

t canoOut(FileOutputStream)

serializador(ObjectOutputStream )

compactador(GZIPOutputStream)

tanque(File)

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

Page 68: Java streams

http://publicationslist.org/junio

• Pode-se também usar compactação. Exemplo:File tanque = new File(“POO.dat”);tanque.createNewFile();FileOutputStream canoOut = new FileOutputStream(tanque);GZIPOutputStream compactador = new GZIPOutputStream(canoOut);ObjectOutputStream serializador = new ObjectOutputStream(compactador);Circulo c = new Circulo(232.43f, 432.15f, "Um circulo");Triangulo t = new Triangulo(543, 67, 215, "Um triangulo");serializador.writeObject(c);serializador.writeObject(t);

Exercício: escreva o código e ilustre a leitura dos objetos queforam compactados em arquivo.

tanque(File)canoOut

(FileOutputStream)serializador

(ObjectOutputStream )

compactador(GZIPOutputStream)

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

Page 69: Java streams

http://publicationslist.org/junio

Acesso aleatório a arquivo

Page 70: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:

File-RandomAccessFile

Page 71: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);

File-RandomAccessFile

Page 72: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");

File-RandomAccessFile

Page 73: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";

File-RandomAccessFile

Page 74: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}

File-RandomAccessFile

Professional JPP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Page 75: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao início

File-RandomAccessFile

Professional JPP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Page 76: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao inícioraf.writeUTF("Professional JSP"); //sobreescreve

File-RandomAccessFile

Professional JSP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Page 77: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao inícioraf.writeUTF("Professional JSP"); //sobreescreveraf.seek(raf.length()); //vai para o final

File-RandomAccessFile

Professional JSP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Page 78: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao inícioraf.writeUTF("Professional JSP"); //sobreescreveraf.seek(raf.length()); //vai para o finalraf.writeUTF("Servlet & JSP Programming"); //escreve (append)

File-RandomAccessFile

Professional JSP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Servlet & JSP Programming

Page 79: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao inícioraf.writeUTF("Professional JSP"); //sobreescreveraf.seek(raf.length()); //vai para o finalraf.writeUTF("Servlet & JSP Programming"); //escreve (append)raf.seek(0); //início de novo

File-RandomAccessFile

Professional JSP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Servlet & JSP Programming

Page 80: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao inícioraf.writeUTF("Professional JSP"); //sobreescreveraf.seek(raf.length()); //vai para o finalraf.writeUTF("Servlet & JSP Programming"); //escreve (append)raf.seek(0); //início de novo/*Lê linha por linha*/while (raf.getFilePointer() < raf.length()) {

System.out.println(raf.readUTF());}

File-RandomAccessFile

Professional JSP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Servlet & JSP Programming

Page 81: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao inícioraf.writeUTF("Professional JSP"); //sobreescreveraf.seek(raf.length()); //vai para o finalraf.writeUTF("Servlet & JSP Programming"); //escreve (append)raf.seek(0); //início de novo/*Lê linha por linha*/while (raf.getFilePointer() < raf.length()) {

System.out.println(raf.readUTF());}

File-RandomAccessFile

Professional JSP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Servlet & JSP Programming

Page 82: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao inícioraf.writeUTF("Professional JSP"); //sobreescreveraf.seek(raf.length()); //vai para o finalraf.writeUTF("Servlet & JSP Programming"); //escreve (append)raf.seek(0); //início de novo/*Lê linha por linha*/while (raf.getFilePointer() < raf.length()) {

System.out.println(raf.readUTF());}

File-RandomAccessFile

Professional JSP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Servlet & JSP Programming

Page 83: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao inícioraf.writeUTF("Professional JSP"); //sobreescreveraf.seek(raf.length()); //vai para o finalraf.writeUTF("Servlet & JSP Programming"); //escreve (append)raf.seek(0); //início de novo/*Lê linha por linha*/while (raf.getFilePointer() < raf.length()) {

System.out.println(raf.readUTF());}

File-RandomAccessFile

Professional JSP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Servlet & JSP Programming

Page 84: Java streams

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:File fTemp = new File(sAFile);RandomAccessFile raf = new RandomAccessFile(sAFile, "rw");String books[] = new String[5];books[0] = "Professional JPP";books[1] = "The Java Application Programming Interface";books[2] = "Java Security";books[3] = "Java Security Handbook";books[4] = "Hacking Exposed J2EE & Java";/*Escreve a partir do início*/for (int i = 0; i < books.length; i++) {

raf.writeUTF(books[i]);}raf.seek(0); //volta ao inícioraf.writeUTF("Professional JSP"); //sobreescreveraf.seek(raf.length()); //vai para o finalraf.writeUTF("Servlet & JSP Programming"); //escreve (append)raf.seek(0); //início de novo/*Lê linha por linha*/while (raf.getFilePointer() < raf.length()) {

System.out.println(raf.readUTF());}raf.close(); //fecha

File-RandomAccessFile

Professional JSP

The Java ApplicationProgramming Interface

Java Security

Java Security Handbook

Hacking Exposed J2EE & Java

Servlet & JSP Programming