Sim, seu teste funciona. Mas tente usar o modo append. Imagine um programa que faça o seguinte: 1 - Abre o arquivo (append) 2 - Grava o objeto. 3 - Fecha o arquivo Você roda o programa duas vezes (gravou dois objetos no arquivo). Então você faz um programa que usa o método readObject duas vezes para ler os dois objetos (vai gerar uma excessão). Estou mandando em anexo as classes que estou tentando fazer funcionar.
----- Original Message ----- From: "Marcelo Alves" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Wednesday, March 13, 2002 8:28 AM Subject: Re: [java-list] Serialização de dois objetos no mesmo arquivo > Oi, > > Bom, fiz um teste aqui, e funcionou perfeitamente... > > // ------------------------------------- > import java.io.*; > > public class TesteSerializacao implements Serializable { > private int campoA; > private int campoB; > private String str; > > public int getCampoA() { > return campoA; > } > > public void setCampoA(int campoA) { > this.campoA = campoA; > } > > public int getCampoB() { > return campoB; > } > > public void setCampoB(int campoB) { > this.campoB = campoB; > } > > public java.lang.String getStr() { > return str; > } > > public void setStr(java.lang.String str) { > this.str = str; > } > > public String toString() { > StringBuffer b = new StringBuffer(); > b.append("("); > b.append(campoA); > b.append(","); > b.append(campoB); > b.append(") "); > b.append(str); > > return b.toString(); > } > > public TesteSerializacao(int campoA, int campoB, String str) { > this.campoA = campoA; > this.campoB = campoB; > this.str = str; > } > > public static void main(String[] args) throws FileNotFoundException, > IOException, ClassNotFoundException { > // gravando > ObjectOutputStream o = new ObjectOutputStream(new > FileOutputStream("objetos.objects")); > > TesteSerializacao um = new TesteSerializacao(1, 2, "Objeto 1"); > TesteSerializacao dois = new TesteSerializacao(10, 20, "Objeto 2"); > > o.writeObject(um); > o.writeObject(dois); > > o.flush(); > o.close(); > > // lendo > ObjectInputStream i = new ObjectInputStream (new FileInputStream > ("objetos.objects")); > TesteSerializacao a = (TesteSerializacao)i.readObject(); > TesteSerializacao b = (TesteSerializacao)i.readObject(); > > System.out.println(a + "\n" + b); > i.close(); > } > > } > // FIM ---------------------------------------------------- > > ----- Original Message ----- > From: "Eduardo de Britto Castro" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Monday, March 11, 2002 2:09 PM > Subject: Re: [java-list] Serialização de dois objetos no mesmo arquivo > > > Mas é isso mesmo que eu estou tentando fazer: gravar mais de um objeto em um > mesmo arquivo e depois os ler. > ----- Original Message ----- > From: [EMAIL PROTECTED] > To: [EMAIL PROTECTED] > Sent: Wednesday, March 06, 2002 8:53 AM > Subject: RE: [java-list] Serialização de dois objetos no mesmo arquivo > > > > > > Em uma segunda olhada no código percebi que vc está passando true como > segundo argumento do constructor FileOutputStream. Isso significa utilizar > modo append. Essa é provavelmente a causa do problema. O arquivo já devia > existir anteriormente comresquicios de testes anteriores, não? Quando você > manda abrir o arquivo para leitura, você está lendo do início do arquivo > novamente. > > Não passe este segundo argumento. > > Rodrigo > -----Original Message----- > From: Eduardo de Britto Castro [mailto:[EMAIL PROTECTED]] > Sent: domingo, 3 de março de 2002 23:37 > To: [EMAIL PROTECTED] > Subject: Re: [java-list] Serialização de dois objetos no mesmo arquivo > > > Eu já fiz isso, mas mesmo assim o problema acontece. Posso até fazer > um programa para gravar e outro para ler que dá problema no que lê. > ----- Original Message ----- > From: Rodrigo B. de Oliveira > To: [EMAIL PROTECTED] > Sent: Saturday, March 02, 2002 3:47 PM > Subject: Re: [java-list] Serialização de dois objetos no mesmo > arquivo > > > flush e close a primeira stream antes de prosseguir... > ----- Original Message ----- > From: Eduardo de Britto Castro > To: [EMAIL PROTECTED] > Sent: Wednesday, February 27, 2002 2:49 PM > Subject: [java-list] Serialização de dois objetos no mesmo arquivo > > > Porque depois de serializar mais de um objeto no mesmo arquivo > ocorre uma excessao ao tentar recuperar o segundo? > > --------------------------------------- GRAVACAO > OK --------------------------------------- > MeuObjeto obj1, obj2; > ObjectOutputStream out = new ObjectOutputStream (new > FileOutputStream ("Serializacao.dat",true)); > ... > out.writeObject (obj1); > out.writeObject (obj2); > --------------------------------------- > LEITURA --------------------------------------- > MeuObjeto o1, o2; > ObjectInputStream in = new ObjectInputStream (new FileInputStream > ("Serializacao.dat")); > o1 = (MeuObjeto) in.readObject(); > o2 = (MeuObjeto) in.readObject(); // Excessao ocorre aqui. > > ------------------------------- AQUI ESTA A > EXCESSAO -------------------------------- > Exception in thread "main" java.io.StreamCorruptedException > at > java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1291) > at > java.io.ObjectInputStream.readObject(ObjectInputStream.java:322) > at Serializacao.main(Serializacao.java:25) > > _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------