Java streams
-
Upload
jose-f-rodrigues-jr -
Category
Documents
-
view
173 -
download
4
Transcript of Java streams
http://publicationslist.org/junio
Java Streams (e arquivo)Prof. Jose Fernando Rodrigues Juniorhttp://www.icmc.usp.br/~junio
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