Documente Academic
Documente Profesional
Documente Cultură
Java Avançado
Manipulando Arquivos
Prof. Jucimar Souza
jucibs@gmail.com
Arquivos
Um dos meios de armazenamento
persitentes;
Usa o mecanismo de leitura e escrita em
um dispositivo;
Vamos verificar as formas de ler e gravar
dados em um arquivo utilizando o pacote
java.io
1
04/11/2008
Classe File
A classe File é a classe do Java que
permite ter acesso ‘as informações sobre o
sistema de arquivos. Nome, diretório,
tamanho, permissões de escrita e leitura e
outras coisas mais.
UsoDoFile.java
1. import java.io.File;
2
04/11/2008
Classe File
A classe File também é uma
representação para arquivos e diretórios
do sistema, trazendo informações
adicionais sobre o sistema operacional,
tais como qual caractere é separador de
diretório, informações sobre disco
disponíveis, etc.
InformacaoSistema.java
import java.io.File;
3
04/11/2008
4
04/11/2008
1.
Leitor.java
import java.io.File;
2. import java.io.FileReader;
3. import java.io.IOException;
5
04/11/2008
UsoLeitor.java
1. import java.io.File;
Escritor.java
1. import java.io.File;
2. import java.io.FileWriter;
3. import java.io.IOException;
6
04/11/2008
UsoEscritor.java
1. import java.io.File;
Copiador.java
import java.io.File;
}
7
04/11/2008
CopiadorBinario.java
1. import java.io.File;
2. import java.io.FileInputStream;
3. import java.io.FileOutputStream;
4. import java.io.IOException;
UsoCopiadorBinario.java
1. import java.io.File;
8
04/11/2008
Filtros e Buffers
São objetos intermediários que irão se
encarregar de pegar os dados de uma ponta
e converter, transformar ou armazenar em
estruturas mais complexas.
Os buffers podem trabalhar com uma linha
inteira. Ou seja, o buffer irá ler os dados
caractere a caractere do disco e converterá
tudo o que foi lido em uma String única e
repassa para o programa.
LeitorBuffer.java
1. import java.io.BufferedReader; import java.io.File;
2. import java.io.FileReader; import java.io.IOException;
9
04/11/2008
EscritorBuffer.java
1. import java.io.BufferedWriter;
2. import java.io.File;
3. import java.io.FileWriter;
4. import java.io.IOException;
CopiadorBuffer.java
1. import java.io.File;
10
04/11/2008
Aplicação Gráfica
Podemos usar o método de leitura de
um arquivo texto e colocarmos o
conteúdo deste arquivo em uma janela
de texto.
Conforme o exemplo
LeitorSwing.java
1. import java.awt.Container;
2. import java.io.File;
3. import javax.swing.JFrame;
4. import javax.swing.JScrollPane;
5. import javax.swing.JTextArea;
11
04/11/2008
Exercicio
1. Melhorar o exemplo do gráfico para :
Adicionar um JTextField para especificar o arquivo para abrir.
Carregar o arquivo informado no JTextArea
Adicionar um botão para gravar as alterações do Texto.
2. Construa uma classe Contato com os atributos Nome,
Endereco e Telefone. Crie os métodos de gets e sets
para os atributos. Na classe principal faça um array de
Contato efetue a digitação dos contatos. Após a
digitação coloque os dados em um StringTokenizer
usando o $ como delimitador e efetue a gravação no
arquivo agenda.txt
3. Faça outro programa que vai utilizar a classe Contato
criada na questão 2 e faça o processo de leitura da
agenda carregando os dados do disco para o array.
Imprima todos os dados na tela.
Serialização de Objetos
Serialização de objeto – o mecanismo para ler ou
gravar um objeto inteiro em um arquivo.
Objeto serializado – o objeto representado como
uma seqüência de bytes, incluindo os dados do
objeto e as informações sobre o objeto.
Desserialização – recria um objeto na memória a
partir dos dados no arquivo.
12
04/11/2008
13
04/11/2008
Classe Caixa.java
import java.io.*;
try{
FileOutputStream fs=new FileOutputStream("caixa.ser");
ObjectOutputStream os=new ObjectOutputStream(fs);
os.writeObject(caixa1);
os.close();
} catch (Exception ex){
ex.printStackTrace();
}
}
}
14
04/11/2008
Desserialização de Objetos
Para abrir um arquivo a fim de ler objetos, crie um
FileInputStream empacotado por um
ObjectInputStream.
FileInputStream fornece os métodos para ler a entrada
baseada em bytes a partir de um arquivo.
ObjectInputStream utiliza FileInputStream para ler
os objetos em um arquivo.
O método readObject de ObjectInputStream lê um
objeto, que, então, sofre downcast para o tipo adequado.
EOFException ocorre se houver uma tentativa de ler depois do final
do arquivo.
ClassNotFoundException ocorre se a classe para o objeto sendo
lido não puder ser localizada.
O método close de ObjectInputStream fecha os dois
objetos.
try{
FileInputStream fs=new FileInputStream("caixa.ser");
ObjectInputStream os=new ObjectInputStream(fs);
geral=os.readObject();
15
04/11/2008
Exercicio
Faça uma alteração no programa para gravar
uma série de objetos Caixa com tamanhos
diferentes.
Depois faça um programa para deserializar os
objetos caixas armazenados no arquivo e
imprima a largura, altura e profundidade de
cada um. Você pode usar a EOFException
para detectar o fim do arquivo
16