"Appendar" objeto serializado em um arquivo [Resolvido]

Olá pessoal!
Estou dando um fuçada em como funciona o ObjectInputStream e o ObjectOutputStream para gravar em um arquivo um determinado objeto serializável.
Consegui criar o tal arquivo, só que não faço idéia de como farei para “appendar” outras entradas (objetos serializados) nesse mesmo arquivo.
Vou postar aqui as classes que estou utilizando:

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Pet implements Serializable {
	private String name;
	private String owner;
	private Date birth;
	private Date death;
	
	public Pet(String name, String owner) {
		this.name = name;
		this.owner = owner;
	}

	public Pet(String name, String owner, Date birth, Date death) {
		this.name = name;
		this.owner = owner;
		this.birth = birth;
		this.death = death;
	}

	//getters e setters
	
	public String toString(){
		StringBuilder sb = new StringBuilder("");
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		sb.append(name);
		if(owner != null)
			sb.append(", owned by " + owner);
		sb.append(".");
		if(birth != null) {
			sb.append(" Born in " + sdf.format(birth));
		}
		if(death != null) {
			if(birth != null)
				sb.append(" and died in");
			else
				sb.append(" Died in");
			sb.append(" " + sdf.format(death));
		}
		if(birth != null || death != null)
			sb.append(".");
		
		return sb.toString();
	}
}
import br.com.autbank.tech.util.time.Pause;

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.io.Serializable;
import java.util.Calendar;
import java.util.Date;

public class Test {
	public static void writeBin(File file, Serializable ser) 
		throws IOException 
	{
		FileOutputStream fos = new FileOutputStream(file);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		oos.writeObject(ser);
		oos.close();
		fos.close();
	}
	
	public static Serializable readBin(File file)
		throws IOException,
			ClassNotFoundException
	{
		FileInputStream fis = new FileInputStream(file);
		ObjectInputStream ois = new ObjectInputStream(fis);
		Serializable result = (Serializable) ois.readObject();
		return result;
	}
	
	public static Date getDate(int day, int month, int year) {
		Calendar c = Calendar.getInstance();
		c.setLenient(false);
		c.set(year, month - 1, day);
		return c.getTime();
	}
	
	public static void main(String[] args)
		throws IOException,
			ClassNotFoundException
	{
		Pet myPet = new Pet(
			"Budino", 
			"Mantu",
			getDate(10, 05, 1986),
			getDate(24, 12, 1999)
		);
		
		File file = new File(System.getProperty("java.io.tmpdir"), "pets.pet");
		if(file.exists())
			file.delete();
		if(file.createNewFile()) {
			writeBin(file, myPet);
			System.out.println("File created in " + file.getParent());
			Pause.zzz(1000);
			myPet = (Pet)readBin(file);
			System.out.println(
				"Pet retrieved from " + file.getAbsolutePath() + ":\n\t" + myPet
			);
		}
		else
			throw new RuntimeException("File wasn't created");
	}
}

Gostaria de saber como eu faço para inserir mais de um objeto Pet no meu arquivo, se é que isso é possível…
Obrigado, pessoal!

Até deve dar pra fazer uma gambi, mas… por que você não serializa um array?

Abraço,

Armando

Boa idéia! Tava vendo que ArrayList (e outras collections) são serializáveis.
Mas aí vai uma dúvida: Vamos supor que eu tenha um programinha que armazene eventos de uma agenda. Aí, eu quero serializar esses eventos em um arquivo. Partindo do pressuposto que eu tenha um ArrayList para gravar estes objetos Evento, seria muito custoso eu serializar o ArrayList a cada alteração sua? Seria melhor eu deixar pra serializar tudo de uma vez em algum momento específico?

Cara, a menos que você tenha arrays muito grandes ou um equipamento muito limitado, o custo dessa operação vai ser relativamente pequeno. Uma sugestão é, se ficar muito lento, colocar uma ação de “salvar” para gravar no arquivo… aí fica na mão do usuário. Pela quantidade de alterações que uma agenda sofre diariamente (considerando que seja uma agenda pessoal), acredito que você não vá ter problema em salvar toda vez. Faça alguns testes de performance… crie umas 5000 instâncias de apontamentos e mande ler e gravar para ver o tempo.

Valeu! Muito obrigado pelas dicas!