Bom, eu criei uma classe Palavra, com duas variaveis de instancia: nome e descricao. Criei um ArrayList e mandei um ObjectOutputStream, a partir dum FileOutputStream, salvar essa ArrayList num arquivo palavras.dat.
Ok, até ai tudo certo. Mas o problema é quando eu vo ler desse arquivo. Quando eu mando ArrayList palavras = (ArrayList) oLerPalavras.readObject();, da uma EOFException.
Já tentei resolver, mas não to conseguindo.
Segue abaixo o código:
[code]package Leitor;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import Dicionario.Palavra;
public class LeitorFinal {
private static FileInputStream fLerIndice;
private static FileInputStream fLerDescricao;
private static ObjectInputStream oLerIndice;
private static ObjectInputStream oLerDescricao;
private static ArrayList listaIndice;
private static ArrayList listaDescricao;
private static ArrayList palavras;
private static FileOutputStream fGravarPalavras;
private static ObjectOutputStream oGravarPalavras;
public static void main(String[] args) {
File indice = new File("G:/trabalho dicionario/indice2.dat");
File descricao = new File("G:/trabalho dicionario/descricao.dat");
File palavra = new File("G:/trabalho dicionario/palavras.dat");
try{
fLerIndice = new FileInputStream(indice);
fLerDescricao = new FileInputStream(descricao);
oLerIndice = new ObjectInputStream(fLerIndice);
oLerDescricao = new ObjectInputStream(fLerDescricao);
listaIndice = (ArrayList<String>) oLerIndice.readObject();
listaDescricao = (ArrayList<String>) oLerDescricao.readObject();
palavras = new ArrayList<Palavra>();
for(int i=0; i<listaIndice.size(); i++){
Palavra p = new Palavra(listaIndice.get(i), listaDescricao.get(i));
palavras.add(p);
}
fGravarPalavras = new FileOutputStream(palavra, false);
oGravarPalavras = new ObjectOutputStream(fGravarPalavras);
oGravarPalavras.writeObject(palavras);
oGravarPalavras.flush();
oGravarPalavras.close();
}
catch(Exception e){
System.out.println("exceção1");
}
}
}[/code]
[code]package Dicionario;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class BancoDeDados {
private FileInputStream fLerPalavras;
private ObjectInputStream oLerPalavras;
private FileOutputStream fGravarPalavras;
private ObjectOutputStream oGravarPalavras;
private File palavrasFile;
private ArrayList palavras;
public BancoDeDados(){
palavrasFile = new File("palavras.dat");
try{
fLerPalavras = new FileInputStream(palavrasFile);
oLerPalavras = new ObjectInputStream(fLerPalavras);
fGravarPalavras = new FileOutputStream(palavrasFile, false);
oGravarPalavras = new ObjectOutputStream(fGravarPalavras);
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Erro ao iniciar banco de dados. Certifique-se que o arquivo palavras.dat esteja no mesmo diretório do programa. Fechando programa...");
System.exit(0);
}
ler();
}
public void ler(){
try {
palavras = (ArrayList<Palavra>) oLerPalavras.readObject();
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Erro ao iniciar banco de dados. Certifique-se que o arquivo palavras.dat esteja no mesmo diretório do programa. Fechando programa...");
System.exit(0);
}
}
public void gravar(){
try{
oGravarPalavras.writeObject(palavras);
oGravarPalavras.flush();
oGravarPalavras.close();
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Erro ao gravar no banco de dados. Certifique-se que o arquivo palavras.dat esteja no mesmo diretório do programa.");
}
}
public void addPalavra(String nome, String descricao){
Palavra p = new Palavra(nome, descricao);
palavras.add(p);
}
public int sizePalavra(){
return palavras.size();
}
public Palavra getPalavra(int i){
return palavras.get(i);
}
}
[/code]
O erro tá no método ler() em “palavras = (ArrayList) oLerPalavras.readObject();”.
Obrigado desde já. :]