http://publicationslist.org/junio
Java Streams (e arquivo)
Prof. Jose Fernando Rodrigues Junior
http://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 de
um rio, o que seria equivalente aos dados que passam por
um 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, e
que a fonte de água não é indeterminada
• O conceito se tornou bastante usado em toda a computação
na década de 90, sendo usado em diversas linguagens de
programação
Introdução
http://publicationslist.org/junio
• Streams podem se referir aos dados que fluem de diversas
fontes distintas: arquivos, conexões de rede, entrada padrão
de dados (teclado), ou mesmo a memória
• Streams não podem ser navegadas para frente e para trás, e
também não possuem ponteiros para posição do arquivo
• Para casos assim, usa-se a classe RandomAccessFile, entre
outras
• Streams se baseiam no fluxo unidirecional de bytes, de
characteres, 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 corrente
System.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 arquivos
System.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])
01011001
10110010
10101010
10111100
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])
01011001
10110010
10101010
10111100
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
01011001
10110010
10101010
10111100
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
01011001
10110010
10101010
10111100
System.out
(PrintStream)
Como se vê, os streams do Java funcionam segundo
um sistema de pipeline (tubulação) – um mecanismo
fornece 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
01011001
10110010
10101010
10111100
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
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 diferentes
maneiras. Exemplo:
File-FileInputStream-InputStreamReader
http://publicationslist.org/junio
• Leitores específicos fornecem os dados de diferentes
maneiras. Exemplo:
File tanque = new File(“agua.txt”);
tanque
(File)
File-FileInputStream-InputStreamReader
http://publicationslist.org/junio
• Leitores específicos fornecem os dados de diferentes
maneiras. 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 diferentes
maneiras. 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 diferentes
maneiras. 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 diferentes
maneiras. 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 o
g r a
m a c
a o .
File-FileInputStream-InputStreamReader
filtro
(InputStreamReader )
cano
(FileInputStream)
tanque
(File)
balde
(char[64])
http://publicationslist.org/junio
• Leitores específicos fornecem os dados de diferentes
maneiras. 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 o
g r a
m a c
a o .
http://publicationslist.org/junio
• Leitores específicos fornecem os dados de diferentes
maneiras. 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 diferentes
maneiras. 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 e
não como bytes.
Entre eles: BufferedReader, CharArrayReader, FilterReader,
InputStreamReader, PipedReader, StringReader
http://publicationslist.org/junio
• Leitores específicos fornecem os dados de diferentes
maneiras. Exemplo:
File-FileInputStream-InputStreamReader-BufferedReader
http://publicationslist.org/junio
• Leitores específicos fornecem os dados de diferentes
maneiras. Exemplo:
File tanque = new File(“agua.txt”);
tanque
(File)
File-FileInputStream-InputStreamReader-BufferedReader
http://publicationslist.org/junio
• Leitores específicos fornecem os dados de diferentes
maneiras. 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 diferentes
maneiras. 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 diferentes
maneiras. 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 diferentes
maneiras. Exemplo:
File tanque = new File(“agua.txt”);
FileInputStream cano = new FileInputStream(tanque);
InputStreamReader filtro = new InputStreamReader(cano);
BufferedReader decantador = new BufferedReader(filtro);//BUFFER
String balde = decantador.readLine();
decantador
(BuffereReader)
filtro
(InputStreamReader )
cano
(FileInputStream)
tanque
(File)
File-FileInputStream-InputStreamReader-BufferedReader
balde
“Estruturas de dados n”
http://publicationslist.org/junio
• Leitores específicos fornecem os dados de diferentes
maneiras. Exemplo:
File tanque = new File(“agua.txt”);
FileInputStream cano = new FileInputStream(tanque);
InputStreamReader filtro = new InputStreamReader(cano);
BufferedReader decantador = new BufferedReader(filtro);//BUFFER
String 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 ser
serializada, para isso ela tem que implementar a Interface
Serializable.
• A Interface Serializable é uma “tagging interface”, ela não
possui nenhum método e nenhum atributo. Ela apenas tipifica
uma dada classe indicando que ela pode ser escrita como uma
sequê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);
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);
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
c
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");
serializador.writeObject(c);
t
c
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");
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 que
foram 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 Application
Programming 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 Application
Programming 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
raf.writeUTF("Professional JSP"); //sobreescreve
File-RandomAccessFile
Professional JSP
The Java Application
Programming 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
raf.writeUTF("Professional JSP"); //sobreescreve
raf.seek(raf.length()); //vai para o final
File-RandomAccessFile
Professional JSP
The Java Application
Programming 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
raf.writeUTF("Professional JSP"); //sobreescreve
raf.seek(raf.length()); //vai para o final
raf.writeUTF("Servlet & JSP Programming"); //escreve (append)
File-RandomAccessFile
Professional JSP
The Java Application
Programming 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ício
raf.writeUTF("Professional JSP"); //sobreescreve
raf.seek(raf.length()); //vai para o final
raf.writeUTF("Servlet & JSP Programming"); //escreve (append)
raf.seek(0); //início de novo
File-RandomAccessFile
Professional JSP
The Java Application
Programming 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ício
raf.writeUTF("Professional JSP"); //sobreescreve
raf.seek(raf.length()); //vai para o final
raf.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 Application
Programming 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ício
raf.writeUTF("Professional JSP"); //sobreescreve
raf.seek(raf.length()); //vai para o final
raf.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 Application
Programming 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ício
raf.writeUTF("Professional JSP"); //sobreescreve
raf.seek(raf.length()); //vai para o final
raf.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 Application
Programming 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ício
raf.writeUTF("Professional JSP"); //sobreescreve
raf.seek(raf.length()); //vai para o final
raf.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 Application
Programming 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ício
raf.writeUTF("Professional JSP"); //sobreescreve
raf.seek(raf.length()); //vai para o final
raf.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 Application
Programming Interface
Java Security
Java Security Handbook
Hacking Exposed J2EE & Java
Servlet & JSP Programming

Java streams

  • 1.
    http://publicationslist.org/junio Java Streams (earquivo) Prof. Jose Fernando Rodrigues Junior http://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
  • 2.
    http://publicationslist.org/junio • O conceitode streams se refere a uma analogia à água de um rio, o que seria equivalente aos dados que passam por um 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, e que a fonte de água não é indeterminada • O conceito se tornou bastante usado em toda a computação na década de 90, sendo usado em diversas linguagens de programação Introdução
  • 3.
    http://publicationslist.org/junio • Streams podemse referir aos dados que fluem de diversas fontes distintas: arquivos, conexões de rede, entrada padrão de dados (teclado), ou mesmo a memória • Streams não podem ser navegadas para frente e para trás, e também não possuem ponteiros para posição do arquivo • Para casos assim, usa-se a classe RandomAccessFile, entre outras • Streams se baseiam no fluxo unidirecional de bytes, de characteres, de objetos, entre outras prossibilidades Introdução
  • 4.
  • 5.
    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 corrente System.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 arquivos System.out.println(fonte.getCanonicalPath( )); System.out.println(fonte.lenght( )); fonte.delete( ); } } } Classe File
  • 6.
    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
  • 7.
  • 8.
  • 9.
    http://publicationslist.org/junio • Exemplo: File tanque= new File(“agua.txt”); tanque (File) File-FileInputStream
  • 10.
    http://publicationslist.org/junio • Exemplo: File tanque= new File(“agua.txt”); FileInputStream cano = new FileInputStream(tanque); cano (FileInputStream) tanque (File) File-FileInputStream
  • 11.
    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
  • 12.
    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]) 01011001 10110010 10101010 10111100 File-FileInputStream
  • 13.
    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]) 01011001 10110010 10101010 10111100 File-FileInputStream
  • 14.
    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 01011001 10110010 10101010 10111100 System.out (PrintStream)
  • 15.
    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 01011001 10110010 10101010 10111100 System.out (PrintStream) Como se vê, os streams do Java funcionam segundo um sistema de pipeline (tubulação) – um mecanismo fornece os dados para a próxima etapa, sucessivamente.
  • 16.
  • 17.
    http://publicationslist.org/junio • Copiando umarquivo com streams. Exemplo: File-FileInputStream-FileOutputStream
  • 18.
    http://publicationslist.org/junio • Copiando umarquivo com streams. Exemplo: File fonte = new File(nomeFonte); File destino = new File(nomeDestino); File-FileInputStream-FileOutputStream destino (File) fonte (File)
  • 19.
    http://publicationslist.org/junio • Copiando umarquivo 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)
  • 20.
    http://publicationslist.org/junio • Copiando umarquivo 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])
  • 21.
    http://publicationslist.org/junio • Copiando umarquivo 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 01011001 10110010 10101010 10111100
  • 22.
    http://publicationslist.org/junio • Copiando umarquivo 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])
  • 23.
    http://publicationslist.org/junio • Copiando umarquivo 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
  • 24.
    http://publicationslist.org/junio • Copiando umarquivo 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)
  • 25.
    http://publicationslist.org/junio • Copiando umarquivo 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)
  • 26.
    http://publicationslist.org/junio • Copiando umarquivo 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])
  • 27.
  • 28.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. Exemplo: File-FileInputStream-InputStreamReader
  • 29.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. Exemplo: File tanque = new File(“agua.txt”); tanque (File) File-FileInputStream-InputStreamReader
  • 30.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. Exemplo: File tanque = new File(“agua.txt”); FileInputStream cano = new FileInputStream(tanque); cano (FileInputStream) tanque (File) File-FileInputStream-InputStreamReader
  • 31.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. 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
  • 32.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. 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])
  • 33.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. 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 o g r a m a c a o . File-FileInputStream-InputStreamReader filtro (InputStreamReader ) cano (FileInputStream) tanque (File) balde (char[64])
  • 34.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. 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 o g r a m a c a o .
  • 35.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. 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)
  • 36.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. 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 e não como bytes. Entre eles: BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
  • 37.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. Exemplo: File-FileInputStream-InputStreamReader-BufferedReader
  • 38.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. Exemplo: File tanque = new File(“agua.txt”); tanque (File) File-FileInputStream-InputStreamReader-BufferedReader
  • 39.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. Exemplo: File tanque = new File(“agua.txt”); FileInputStream cano = new FileInputStream(tanque); cano (FileInputStream) tanque (File) File-FileInputStream-InputStreamReader-BufferedReader
  • 40.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. 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
  • 41.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. 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
  • 42.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. Exemplo: File tanque = new File(“agua.txt”); FileInputStream cano = new FileInputStream(tanque); InputStreamReader filtro = new InputStreamReader(cano); BufferedReader decantador = new BufferedReader(filtro);//BUFFER String balde = decantador.readLine(); decantador (BuffereReader) filtro (InputStreamReader ) cano (FileInputStream) tanque (File) File-FileInputStream-InputStreamReader-BufferedReader balde “Estruturas de dados n”
  • 43.
    http://publicationslist.org/junio • Leitores específicosfornecem os dados de diferentes maneiras. Exemplo: File tanque = new File(“agua.txt”); FileInputStream cano = new FileInputStream(tanque); InputStreamReader filtro = new InputStreamReader(cano); BufferedReader decantador = new BufferedReader(filtro);//BUFFER String balde = decantador.readLine(); System.out.println(balde); decantador (BuffereReader) filtro (InputStreamReader ) cano (FileInputStream) tanque (File) File-FileInputStream-InputStreamReader-BufferedReader System.out (PrintStream)
  • 44.
  • 45.
    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
  • 46.
    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)
  • 47.
    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)
  • 48.
    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 )
  • 49.
    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 )
  • 50.
    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 ser serializada, para isso ela tem que implementar a Interface Serializable. • A Interface Serializable é uma “tagging interface”, ela não possui nenhum método e nenhum atributo. Ela apenas tipifica uma dada classe indicando que ela pode ser escrita como uma sequência de bytes.
  • 51.
    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 )
  • 52.
    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); t tanque (File) File-FileOutputStream-ObjectOutputStream tanque (File) canoOut (FileOutputStream) serializador (ObjectOutputStream )
  • 53.
    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 )
  • 54.
    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)
  • 55.
    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
  • 56.
    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
  • 57.
    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
  • 58.
    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
  • 59.
  • 60.
    http://publicationslist.org/junio • Pode-se tambémusar compactação. Exemplo: File-FileOutputStream-GZIPOutputStream-ObjectOutputStream
  • 61.
    http://publicationslist.org/junio • Pode-se tambémusar compactação. Exemplo: File tanque = new File(“POO.dat”); tanque.createNewFile(); tanque (File) File-FileOutputStream-GZIPOutputStream-ObjectOutputStream
  • 62.
    http://publicationslist.org/junio • Pode-se tambémusar compactação. Exemplo: File tanque = new File(“POO.dat”); tanque.createNewFile(); FileOutputStream canoOut = new FileOutputStream(tanque); File-FileOutputStream-GZIPOutputStream-ObjectOutputStream tanque (File)canoOut (FileOutputStream)
  • 63.
    http://publicationslist.org/junio • Pode-se tambémusar 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
  • 64.
    http://publicationslist.org/junio • Pode-se tambémusar 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
  • 65.
    http://publicationslist.org/junio • Pode-se tambémusar 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 c tanque (File)canoOut (FileOutputStream) serializador (ObjectOutputStream ) compactador (GZIPOutputStream) File-FileOutputStream-GZIPOutputStream-ObjectOutputStream
  • 66.
    http://publicationslist.org/junio • Pode-se tambémusar 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 c tanque (File)canoOut (FileOutputStream) serializador (ObjectOutputStream ) compactador (GZIPOutputStream) File-FileOutputStream-GZIPOutputStream-ObjectOutputStream
  • 67.
    http://publicationslist.org/junio • Pode-se tambémusar 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
  • 68.
    http://publicationslist.org/junio • Pode-se tambémusar 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 que foram compactados em arquivo. tanque (File)canoOut (FileOutputStream) serializador (ObjectOutputStream ) compactador (GZIPOutputStream) File-FileOutputStream-GZIPOutputStream-ObjectOutputStream
  • 69.
  • 70.
  • 71.
    http://publicationslist.org/junio • Acesso aleatório.Exemplo: File fTemp = new File(sAFile); File-RandomAccessFile
  • 72.
    http://publicationslist.org/junio • Acesso aleatório.Exemplo: File fTemp = new File(sAFile); RandomAccessFile raf = new RandomAccessFile(sAFile, "rw"); File-RandomAccessFile
  • 73.
    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
  • 74.
    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 Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java
  • 75.
    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 Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java
  • 76.
    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 raf.writeUTF("Professional JSP"); //sobreescreve File-RandomAccessFile Professional JSP The Java Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java
  • 77.
    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 raf.writeUTF("Professional JSP"); //sobreescreve raf.seek(raf.length()); //vai para o final File-RandomAccessFile Professional JSP The Java Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java
  • 78.
    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 raf.writeUTF("Professional JSP"); //sobreescreve raf.seek(raf.length()); //vai para o final raf.writeUTF("Servlet & JSP Programming"); //escreve (append) File-RandomAccessFile Professional JSP The Java Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java Servlet & JSP Programming
  • 79.
    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 raf.writeUTF("Professional JSP"); //sobreescreve raf.seek(raf.length()); //vai para o final raf.writeUTF("Servlet & JSP Programming"); //escreve (append) raf.seek(0); //início de novo File-RandomAccessFile Professional JSP The Java Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java Servlet & JSP Programming
  • 80.
    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 raf.writeUTF("Professional JSP"); //sobreescreve raf.seek(raf.length()); //vai para o final raf.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 Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java Servlet & JSP Programming
  • 81.
    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 raf.writeUTF("Professional JSP"); //sobreescreve raf.seek(raf.length()); //vai para o final raf.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 Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java Servlet & JSP Programming
  • 82.
    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 raf.writeUTF("Professional JSP"); //sobreescreve raf.seek(raf.length()); //vai para o final raf.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 Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java Servlet & JSP Programming
  • 83.
    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 raf.writeUTF("Professional JSP"); //sobreescreve raf.seek(raf.length()); //vai para o final raf.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 Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java Servlet & JSP Programming …
  • 84.
    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 raf.writeUTF("Professional JSP"); //sobreescreve raf.seek(raf.length()); //vai para o final raf.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 Application Programming Interface Java Security Java Security Handbook Hacking Exposed J2EE & Java Servlet & JSP Programming