Situação: tem uma classe que eu serializo (pra arquivo) e desSerializo numa boa. Depois que serializei pego arquivo e compacto.
Dúvida: como faço isso em um só processo?? Eu já tentei de tudo para serializar e zipar junto (em um só processo) e não obtenho nenhum resultado satisfatório, ou não zipa ou não serializa.
Vocês podem dizer, tá mas porque não deixa assim se tá funcionando?? Porque é POG (programação Orientada a Gambiarra) e pode não funcionar, se o local onde vc gravar (o temp) não tiver acesso a escrita.
Será que alguém conhece alguma solução?? Qualquer dica já valendo.
Peço desculpas se isto já tinha sido perguntado, mas não encontrei no forum.
Serve um arquivo .gz? Isso é fácil. (Para arquivos .zip, que podem conter vários arquivos dentro, então o processo é mais complicado, mas acho que você pode entender facilmente). Vou dar um exemplo bobo.
importjava.io.*;importjava.util.*;importjava.util.zip.*;classClienteimplementsSerializable{Stringnome;Stringendereco;doubledivida;publicCliente(Stringn,Stringe,doubled){nome=n;endereco=e;divida=d;}publicStringtoString(){returnString.format("nome %s: endereco %s: deve R$ %.2f%n",nome,endereco,divida);}}classSerializeAndCompact{@SuppressWarnings("unchecked")publicstaticvoidmain(String[]args)throwsException{List<Cliente>clientes=newArrayList<Cliente>();clientes.add(newCliente("Luis Inacio","Palacio da Alvorada",171.69));clientes.add(newCliente("Hugo Chavez","Capitolio Federal",666.67));clientes.add(newCliente("Evo Morales","Estacion de Desamparados",1234.56));System.out.println("Lista de clientes a ser serializada:");System.out.println(clientes);ObjectOutputStreamoos=newObjectOutputStream(newGZIPOutputStream(newFileOutputStream("teste.gz")));oos.writeObject(clientes);oos.close();clientes=null;// perco a referência ao objeto, e vamos carregá-lo do arquivo serializadoObjectInputStreamois=newObjectInputStream(newGZIPInputStream(newFileInputStream("teste.gz")));clientes=Collections.checkedList((List<Cliente>)ois.readObject(),Cliente.class);ois.close();System.out.println("Lista de clientes que foi lida do arquivo serializado:");System.out.println(clientes);}}
trialforce
OPA!!!
Muito obrigado, serve GZIP sim, era exatamente isso que eu precisava.
Eu tinha tentado fazer isto com ZIP e não deu certo, com GZIP fica perfeito, deve ter sido esse detalhe dos multiplos arquivos memso.
Realmente lhe agradeço.
Sou usuário novo desto forum e ele está se mostrando muito eficiente em todos os aspectos, assim como o site que tem ótimo material também.