Serializar objetos

Gostaria de uma ajudo no primeiro método que é cadastrar um novo contato
do jeito que está, ele gera essa exeção

Exception in thread “main” java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at aula67SerializaçãoTransient.CadastrandoContatos.main(CadastrandoContatos.java:44)

Gostaria de saber porque? e como resolve-la, se alguem puder ajudar ficaria grato ! Estou começando em java intão ainda tenho essa dúvidas, Obg desde já

[code]

public class CadastrandoContatos {

/**
 * @param args
 * @throws FileNotFoundException 
 */
public static void main(String[] args) throws Exception { 
	
	Contato linha = new Contato();
	int opcao=0;
	FileOutputStream endEscrita = new FileOutputStream("C:/Banco/TesteContato.ser");
	ObjectOutputStream escObj = new ObjectOutputStream(endEscrita);
	FileInputStream endLeitor = new FileInputStream("C:/Banco/TesteContato.ser");
	ObjectInputStream leitorObj = new ObjectInputStream(endLeitor);
	ArrayList<Contato> listaContato = new ArrayList<>();
	
	menu:
	do {
		opcao = Integer.parseInt(JOptionPane.showInputDialog("0- Sair \n1- para cadastrar e escrever contato \n2- listar"));
			
		switch (opcao) {
		case 0:
			break menu;
		case 1:
			
			listaContato.clear();
			
			Contato contato1 = new Contato(JOptionPane.showInputDialog("Digite o nome"),JOptionPane.showInputDialog("Telefone"),
			JOptionPane.showInputDialog("Celular"), JOptionPane.showInputDialog("Digite o E-mail"));
			
			while((linha = (Contato) leitorObj.readObject()) != null){
				listaContato.add(linha);
				System.out.println(linha);		
			}
		
			for (Contato contato : listaContato) {
				escObj.writeObject(contato);
				System.out.println(contato);
			}
				
			continue menu;
		case 2:
			continue menu;
		default:
			continue menu;
		}
			
	} while (true);
	
	
}}[/code]

Tente primeiro escrever e depois ler os contatos do arquivo.