Re: [java-list] Serialização de Objetos
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
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
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
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
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
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
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
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
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...
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...
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...
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] -