Problema com EOFException

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á. :]

Ah… no caso, eu mando salvar o arquivo naquela pasta, no meu pen drive. Copio ele pro diretorio certo, do BancoDeDados, e então executo o BancoDeDados.
Obrigado.