Como verificar EOF após a Serialização?

Bom, eu estava fazendo uma revisão e me deparei como uma questão a respeito de Serialização, pesquisando formas de ler os objetos em um arquivo fiz isso em um while, e capturo uma exception, Teria outra forma mais elegante de ler os objetos em um arquivo e detectar o final do arquivo? segue abaixo meu codigo de exemplo para ilustrar:

[code]import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Pessoa implements Serializable {
/**
*
*/
private static final long serialVersionUID = 6918211458968938345L;

Pessoa(String nome) {
	this.nome = nome;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

private String nome;


public static void main(String[] args) throws IOException,
		ClassNotFoundException {
	FileOutputStream f = new FileOutputStream("pessoas.ser");
	ObjectOutputStream oo = new ObjectOutputStream(f);
	oo.writeObject(new Pessoa("Zé das Medalhas"));
	oo.writeObject(new Pessoa("Viúva Porcina"));

	FileInputStream fi = new FileInputStream("pessoas.ser");
	ObjectInputStream oi = new ObjectInputStream(fi);

	while (true) {
		try {
			Pessoa p = (Pessoa) oi.readObject();
			System.out.println(p.nome);
		} catch (EOFException e) {
			System.out.println("fim arquivo");
			break;
		}

	}
}

}
[/code]

Agradeço a ajuda.

Você pode incluir um objeto para marcar o fim do arquivo. Você pode inclusive escrever uma constante null no fim do arquivo e depois ler os objetos até achar null.

Valeu a dica! fica assim então né…

[code]import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Pessoa implements Serializable {
/**
*
*/
public static final Object FA = null;
private static final long serialVersionUID = 6918211458968938345L;

Pessoa(String nome) {
	this.nome = nome;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

private String nome;

public static void main(String[] args) throws IOException,
		ClassNotFoundException {
	FileOutputStream f = new FileOutputStream("pessoas.ser");
	ObjectOutputStream oo = new ObjectOutputStream(f);
	oo.writeObject(new Pessoa("Zé das Medalhas"));
	oo.writeObject(new Pessoa("Viúva Porcina"));
	oo.writeObject(FA);

	FileInputStream fi = new FileInputStream("pessoas.ser");
	ObjectInputStream oi = new ObjectInputStream(fi);
	Pessoa p;
	while ((p = (Pessoa) oi.readObject()) != FA) {
		System.out.println(p.nome);
	}
}

}
[/code]

Saída:

Zé das Medalhas Viúva Porcina