[ObjectOutputStream] Salvar Vector em Arquivo

Gostaria de informar que esse é meu primeiro tópico aqui no GUJ, sempre quando estou com dúvidas eu fuço os tópicos aqui e sempre me resolvem, porém estou com um probleminha que gostaria de pedir ajuda diretamente à vocês.

Eu criei um Repositorio no qual eu salvo um vetor de objeto(Vector) através do ObjectOutputStream, mas sempre que rodo o programa da sempre o mesmo erro, IOException.

Quando uso o método inserirCliente(linha 14), eu recebo um IOException, que vem do metodo escreverArquivo(linha 52), mas não consigo achar o erro, se alguém poder me ajudar ficaria muito grato!!!
Att.

Segue o código abaixo:

[code]public class RepositorioClienteArquivo implements Repositorio{

private Vector<Cliente> vectorClientes;
private File file;

public RepositorioClienteArquivo() throws IOException, ClassNotFoundException{
	this.file = new File("arquivoClientes.data");
	this.vectorClientes = new Vector<Cliente>();
	escreverArquivo();
	lerArquivo();
}


public void inserirCliente(Cliente c) throws IOException {
	this.vectorClientes.add(c);
	escreverArquivo();
	
}


public void removerCliente(Cliente c) throws IOException{
	this.vectorClientes.remove(c);
	escreverArquivo();
	
}


public Vector<Cliente> procurarCliente(String entrada) {
	
	Vector<Cliente> resultado = new Vector<Cliente>();
	Iterator<Cliente> lista = new Iterator<Cliente>(this.vectorClientes);
	
	while(lista.hasNext()){
		Cliente c = lista.next();
		if(c.getNomeCliente().toLowerCase().contains(entrada.toLowerCase())){
			resultado.add(c);
		}
	}
	
	
	
	return resultado;
}

@SuppressWarnings("unchecked")
public void lerArquivo() throws ClassNotFoundException, IOException{
	ObjectInputStream input = new ObjectInputStream(new FileInputStream(file));
	this.vectorClientes = (Vector<Cliente>)input.readObject();
	
}

public void escreverArquivo() throws IOException{
	ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(file));
	output.writeObject(this.vectorClientes);
	
	
}

}
[/code]

Posta a Stack completa…

A Classe Cliente :

[code]public class Cliente implements Serializable {

private String cpfCliente;
private String foneCliente;
private String nomeCliente;
private Endereco enderecoCliente;


public Cliente(String cpf, String fone, String nome, Endereco endereco){
	
	this.cpfCliente = cpf;
	this.foneCliente = fone;
	this.nomeCliente = nome;
	this.enderecoCliente = endereco;
	
}

public String getCpfCliente() {
	return cpfCliente;
}

public void setCpfCliente(String cpfCliente) {
	this.cpfCliente = cpfCliente;
}

public String getFoneCliente() {
	return foneCliente;
}

public void setFoneCliente(String foneCliente) {
	this.foneCliente = foneCliente;
}

public String getNomeCliente() {
	return nomeCliente;
}

public void setNomeCliente(String nomeCliente) {
	this.nomeCliente = nomeCliente;
}

public Endereco getEnderecoCliente() {
	return enderecoCliente;
}

public void setEnderecoCliente(Endereco enderecoCliente) {
	this.enderecoCliente = enderecoCliente;
}

}[/code]

Parte do Frame do programa que chama o metodo :

[code]try{

			fachada.inserirCliente(tf_cpf.getText(), tf_fone.getText(), tf_nome.getText(), tf_rua.getText(), numero,
					tf_complemento.getText(), tf_bairro.getText(), tf_cidade.getText());
			
			JOptionPane.showMessageDialog(FrameDelivery.this, "Cadastro Realizado Com Sucesso");
		} // fim do try
		
		catch(IOException e){
			JOptionPane.showMessageDialog(null, "IO");
		}[/code]

A classe Endereco implementa Serializable?

Não implementa não, vou fazer a alteração aqui!!!

@Aweee cara, pegouuu que felicidade, não acredito que xinguei jesus por isso!!!
Valeu valeu valeu

Eu geralmente prefiro usar um DataOutputStream e serializar meus objetos manualmente.
Dá mais trabalho, mas você tem controle total sobre o formato dos arquivos.

Sem falar que eu sempre uso uns bytes no início do arquivo para garantir que é válido (MAGIC_NUMBER) e dizer qual é a sua versão.