java streams

Post on 08-Jun-2015

173 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

http://publicationslist.org/junio

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

junio@icmc.usp.br

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

SCC0504 - Programação Orientada a Objetos

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

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

http://publicationslist.org/junio

A classe File

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

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

http://publicationslist.org/junio

Leitura de bytes

http://publicationslist.org/junio

• Exemplo:

File-FileInputStream

http://publicationslist.org/junio

• Exemplo:

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

tanque(File)

File-FileInputStream

http://publicationslist.org/junio

• Exemplo:

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

cano(FileInputStream)

tanque(File)

File-FileInputStream

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

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

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

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)

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.

http://publicationslist.org/junio

Copiando um arquivo

http://publicationslist.org/junio

• Copiando um arquivo com streams. Exemplo:

File-FileInputStream-FileOutputStream

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)

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)

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])

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

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])

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)

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)

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)

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])

http://publicationslist.org/junio

Leitura de bytes como caracteres

http://publicationslist.org/junio

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

File-FileInputStream-InputStreamReader

http://publicationslist.org/junio

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

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

tanque(File)

File-FileInputStream-InputStreamReader

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

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

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])

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])

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 .

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)

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

http://publicationslist.org/junio

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

File-FileInputStream-InputStreamReader-BufferedReader

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

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

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

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

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”

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)

http://publicationslist.org/junio

Escrita/leitura de objetos

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

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)

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)

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 )

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 )

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.

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 )

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 )

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 )

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)

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

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

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

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

http://publicationslist.org/junio

Escrita de objetos com compactação

http://publicationslist.org/junio

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

File-FileOutputStream-GZIPOutputStream-ObjectOutputStream

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

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)

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

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

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

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

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

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

http://publicationslist.org/junio

Acesso aleatório a arquivo

http://publicationslist.org/junio

• Acesso aleatório. Exemplo:

File-RandomAccessFile

http://publicationslist.org/junio

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

File-RandomAccessFile

http://publicationslist.org/junio

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

File-RandomAccessFile

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

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

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

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

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

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

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

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

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

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

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

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

top related