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