Olá pessoal!
Comecei a estudar serialização em Java, porém estou com uma dúvida. Como faço para desserializar mais de um objeto por vez?
Um exemplo de como estou fazendo para serializar:
try{
Contato contato = new Contato();
contato.nome = campo.getText();
JFileChooser caminhoSalvar = new JFileChooser();
caminhoSalvar.showSaveDialog(frame);
ObjectOutputStream gravar = new ObjectOutputStream(new FileOutputStream(caminhoSalvar.getSelectedFile().getAbsolutePath(), true))
gravar.writeObject(contato);
gravar.close();
}catch(IOException ex){
ex.printStackTrace();
}
Coloquei este código no evento do botão gravar.
Para ler os objetos gravados, consigo ler apenas um por vez. Já tentei usar o seguinte código para mostrar em um objeto JTextArea:
try{
JFileChooser caminhoArquivo = new JFileChooser();
caminhoArquivo.showOpenDialog(frame);
File arquivo = new File(caminhoArquivo.getSelectedFile().getAbsolutePath());
ObjectInputStream ler = new ObjectInputStream(new FileInputStream(arquivo));
Contato contatos = new Contato();
while (true){
contatos = (Contato) ler.readObject();
exibecontato.append(contatos.nome + "\n");
}
ler.close();
} catch(ClassNotFoundException cnf){
cnf.printStackTrace();
} catch(IOException ex){
ex.printStackTrace();
}
Porém ao listar é lido apenas o primeiro objeto, ao ler o segundo ocorre a seguinte exceção:
java.io.StreamCorruptedException: invalid type code: AC
Vocês poderiam me dizer a melhor forma de ler todos os objetos serializados?
Obrigado!