Re: [java-list] Serialização de Objetos

2002-11-22 Por tôpico Giuliano Costa



Eu tenho um exemplo, se te ajudar... Abaixo segue o 
código:

---
import java.io.*;

public class Serializacao{public static 
void main(String[] args){try{Pessoa[] p = 
new Pessoa[4];p[0] = new Pessoa("primeiroNome", 22, 
"segundoNome");p[1] = new Pessoa("primeiroNome", 24, 
"segundoNome");p[2] = new Pessoa("primeiroNome",25, 
"segundoNome");p[3] = new Pessoa("primeiroNome", 47, 
"segundoNome");ObjectOutputStream 
out = new ObjectOutputStream(new 
FileOutputStream("Nomes.dat"));out.writeObject(p);out.close();ObjectInputStream 
in = new ObjectInputStream(new 
FileInputStream("Nomes.dat"));Pessoa[] p2 = 
(Pessoa[])in.readObject();for(int 
i = 0; i  p2.length; 
i++){p2[i].print();}}catch(Exception 
e){String erro = e.toString();int i 
= erro.lastIndexOf(".");System.out.println("Erro: " + 
erro.substring(i+1) + "\n" + 
erro);System.exit(1);}}}

class Pessoa implements 
Serializable{public Pessoa(String n, int i, String 
s){this.nome = n;this.idade = 
i;this.sobreNome = s;}public String 
getNome(){return nome;}public String 
getSobreNome(){return sobreNome;}public void 
print(){System.out.println("Nome: " + nome + " Sobrenome: " + 
sobreNome + " Idade: " + idade);}private String 
nome;private int idade;private String 
sobreNome;}

---



  - Original Message - 
  From: 
  Danielle Furtado 
  To: [EMAIL PROTECTED] 
  Sent: Wednesday, November 20, 2002 1:37 
  PM
  Subject: [java-list] Serialização de 
  Objetos
  
  Saudações Javaneses,
  
  alguém tem bom material ou site sobre 
  serialização de objetos??
  
  Desde já agradeço a atenção!
  
  Danielle 
Furtado.


[java-list] Serialização de Objetos

2002-11-21 Por tôpico Danielle Furtado



Saudações Javaneses,

alguém tem bom material ou site sobre serialização 
de objetos??

Desde já agradeço a atenção!

Danielle Furtado.


Re: [java-list] Serialização de dois objetos no mesmo arquivo

2002-03-23 Por tôpico Eduardo de Britto Castro

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

Re: [java-list] Serialização de dois objetos no mesmo arquivo

2002-03-23 Por tôpico Marcelo Alves

Oi,

Achei uma solucao e uma explicacao mais ou menos ...

Solucao :

Na hora de ler, vc faz

FileInputStream fis = new FileInputStream (nome do arquivo);
ObjectInputStream ois = new ObjectInputStream (fis);

Bola b1 = (Bola)ois.readObject();

// como vc gravou 1 bola de cada vez, vc tem q criar outro
ObjectInputStream, mas com o MESMO FileInputStream
ois = new ObjectInputStream (fis);
Bola b2 = (Bola)ois.readObject();

Agora, a explicação :

Quando vc cria um ObjectOutputStream, ele escreve um cabecalho, no começo
lógico do arquivo de serialização. Normalmente, esse começo é o próprio
início do arquivo... Mas como é dado um append, isso ocorre no fim do
arquivo.
Ao tentar ler com ObjectInputStream, ele acha aquele cabecalho, mas ele
estava esperando um marcador de novo objeto. Como não é o esperado,
StreamCorruptedException acontece Solução : forcar o ObjectInputStream a
ler novamente esse cabecalho... Como? Do jeito que eu expliquei acima :)

Espero que tenha ajudado... :)

Qualquer dúvida, olha no help do ObjectOutputStream, q explica esses
headers e separadores de objetos e primitivos...

.: xfer :.

Quando
- Original Message -
From: Eduardo de Britto Castro [EMAIL PROTECTED]
To: Marcelo Alves [EMAIL PROTECTED]
Sent: Wednesday, March 13, 2002 11:49 PM
Subject: Re: [java-list] Serialização de dois objetos no mesmo arquivo


| 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

Re: [java-list] Serialização de dois objetos no mesmo arquivo

2002-03-13 Por tôpico Marcelo Alves

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

Re: [java-list] Serialização de dois objetos no mesmo arquivo

2002-03-12 Por tôpico Eduardo de Britto Castro



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:37To: [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 deserializar mais de 
  um objeto no mesmo arquivo ocorre uma excessao ao tentar recuperar o 
  segundo?
  
  --- 
  GRAVACAO OK --- 
  MeuObjeto obj1, obj2;
  ObjectOutputStreamout = new 
  ObjectOutputStream (new FileOutputStream 
  ("Serializacao.dat",true));
  ...
  out.writeObject (obj1);
  out.writeObject (obj2);
  --- 
  LEITURA--- 
  
  MeuObjeto o1, o2;
  ObjectInputStreamin = 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)


RE: [java-list] Serialização de dois objetos no mesmo arquivo

2002-03-09 Por tôpico rodrigob





  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:37To: [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 deserializar mais de um 
objeto no mesmo arquivo ocorre uma excessao ao tentar recuperar o 
segundo?

--- 
GRAVACAO OK --- 
MeuObjeto obj1, obj2;
ObjectOutputStreamout = new 
ObjectOutputStream (new FileOutputStream 
("Serializacao.dat",true));
...
out.writeObject (obj1);
out.writeObject (obj2);
--- 
LEITURA--- 

MeuObjeto o1, o2;
ObjectInputStreamin = 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)


Re: [java-list] Serialização de dois objetos no mesmo arquivo

2002-03-03 Por tôpico Rodrigo B. de Oliveira



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 deserializar mais de um 
  objeto no mesmo arquivo ocorre uma excessao ao tentar recuperar o 
  segundo?
  
  --- GRAVACAO 
  OK --- 
  MeuObjeto obj1, obj2;
  ObjectOutputStreamout = new 
  ObjectOutputStream (new FileOutputStream 
  ("Serializacao.dat",true));
  ...
  out.writeObject (obj1);
  out.writeObject (obj2);
  --- 
  LEITURA--- 
  
  MeuObjeto o1, o2;
  ObjectInputStreamin = 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)


Re: [java-list] Serialização de dois objetos no mesmo arquivo

2002-03-03 Por tôpico Eduardo de Britto Castro



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 deserializar mais de um 
objeto no mesmo arquivo ocorre uma excessao ao tentar recuperar o 
segundo?

--- 
GRAVACAO OK --- 
MeuObjeto obj1, obj2;
ObjectOutputStreamout = new 
ObjectOutputStream (new FileOutputStream 
("Serializacao.dat",true));
...
out.writeObject (obj1);
out.writeObject (obj2);
--- 
LEITURA--- 

MeuObjeto o1, o2;
ObjectInputStreamin = 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)


[java-list] Serialização... Esclarecendo algumas coisas...

2001-11-20 Por tôpico Clebert Suconic

Para você dizer que uma classe sua é serializável, basta implementar a
interface java.io.Serializable, que não têm nenhum método.

Se você estiver usando uma estrutura de dados complexa, você pode dizer como
serializar sua classe atravez da implementação da interface
java.io.Externalizable, o que lhe obrigará a escrever os métodos
readExternal e writeExternal.


Raramente é necessária a escrita destes métodos. Te aconselho à colocar
implements java.io.Serializable em todas suas classe que fazem parte desta
serialização. O Runtime de java irá tomar conta de toda a Serialização,
desde que os membros agregados também sejam serializados.


Por exemplo


public class NotaFiscal implements java.io.Serializable {
private String valor1; // A serialização de NotaFiscal vai funcionar
pois String é Serializável
private String valor2; // A serialização de NotaFiscal vai funcionar
pois String é Serializável

private java.util.Vector items = new Vector(); // A serialização de
NotaFiscal vai funcionar pois Vector é Serializável (desde que os elementos
dentro do vetor também o sejam).

public void addItem(ItemNF item) {
items.addElement(item);
}


}

public class ItemNF implements java.io.Serializable {
private String codigoItem;
private double valorItem;
private Produto produto; // a idéia é análoga... Se Produto for
Serializável, irá funcionar.
}


Veja que bonito Se Você Serializar NotaFiscal, Os Elementos dentro do
Vetor que serão do tipo ItemNF serão Serializados em conjunto. Os elementos
de Produto, que estiverem dentro de ItemNF também serão serializados.
Inclusive haverá o controle das instâncias, ou seja. Se todos os ítems foram
a mesma instância, o Runtime respeitará isto, criando apenas uma única
instância. Este parágrafo é bem profundo, e é interessante estudar sobre
isto para quem está pensando em pegar a certificação.


Clebert



- Original Message -
From: Antonio Kantek [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Tuesday, November 20, 2001 12:27 PM
Subject: Re: [java-list] serializing the unserializable... :)


 Você vai ter que fazer a sua própria serialização. É o mesmo problema
quando
 você tem uma classe que implementa a interface Remote e você quer
 serializá-la.
 - Original Message -
 From: Herval Freire [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Monday, November 19, 2001 10:37 PM
 Subject: [java-list] serializing the unserializable... :)


 Alohá,

 Creio q esta pergunta nunca foi postada na lista, portanto gostaria de
 iluminacao a respeito.

 Pretendo serializar um objeto meu (herdado de object), que EH
 serializavel. No entanto, um dos seus membros NAO eh: um objeto da classe
 Image.
 Como proceder para a serializacao? Na documentacao fala algo sobre
 sobrescrever dois metodos (writeObject e readObject), no entanto nao deixa
 muito claro e eu nao tive nenhuma boa ideia ainda :P

 Pra referencia, a classe ficticia seria:

 public class MinhaClasse implements Serializable {
private String meuString;
private Image myImage; // Image nao eh serializavel.. nem
BufferedImage,
 subclasse dela
 }


 Como fazer??


 agradeco qquer ajuda

 []s
 -
 --- Herval Freire de A. Júnior --
 --- mailto:[EMAIL PROTECTED] 
 - http://www.herval.hpg.com.br --
 - UIN: 2067270 --
 -
 --[The adepts are everywhere... awake! v0.666a]--
 -

 http://member.isavvix.com/herval/vote.jsp?enquete=1003


 -- 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
 para sair da lista: envie email para [EMAIL PROTECTED]
 -




 -- 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
 para sair da lista: envie email para [EMAIL PROTECTED]
 -



-- 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
para sair da lista: envie email para [EMAIL PROTECTED] 
-




RES: [java-list] Serialização...

2001-01-13 Por tôpico Sergio Stateri Jr

Ol Matheus,

Veja um mtodo que salva o objeto instanciado da prpria classe no arquivo
definido na propriedade String file :

public void save() throws Exception  {
FileOutputStream ostream = new FileOutputStream(this.file);
ObjectOutputStream p = new ObjectOutputStream(ostream);
p.writeObject(this);
p.flush();
ostream.close();
}


E agora veja um trecho de cdigo que l um objeto serializado no arquivo
definido na mesma propriedade String file. Perceba que o mtodo
readObject() da classe ObjectInputStream retorna um Object, assim
precisamos fazer um cast conversion para a classe original do objeto, neste
caso a classe MinhaClasse.

FileInputStream istream = new FileInputStream(this.file);
ObjectInputStream p = new ObjectInputStream(istream);
MinhaClasse meuObjeto = (MinhaClasse)p.readObject();
istream.close();

[]s,

Sergio Stateri Jr
[EMAIL PROTECTED]
Tesla Tecnologia
Sao Paulo (SP)

-Mensagem original-
De: Matheus Antonelli [mailto:[EMAIL PROTECTED]]
Enviada em: Quinta-feira, 11 de Janeiro de 2001 14:52
Para: [EMAIL PROTECTED]
Assunto: [java-list] Serializao...

Ola,

Gostaria de entender a serializagco em Java, mas estou com um pouco de
dificuldade.

Alguim poderia me mostrar duas classes, uma que escreve e outra que lj um
objeto serializado ?

Obrigado
Matheus


-- LISTA SOUJAVA 
http://www.soujava.org.br  -  Sociedade de Usurios Java da Sucesu-SP
dvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usurios Java da Sucesu-SP 
dvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




[java-list] Serialização...

2001-01-11 Por tôpico Matheus Antonelli

Ola,

Gostaria de entender a serializagco em Java, mas estou com um pouco de
dificuldade.

Alguim poderia me mostrar duas classes, uma que escreve e outra que lj um
objeto serializado ?

Obrigado
Matheus


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usurios Java da Sucesu-SP 
dvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-