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] 
-------------------------------------------------------------------------

Responder a