Preciso de ajuda com serialização e desserialização

5 respostas
M

Sou iniciante em java, fiz um programinha para “cadastrar peças em um estoque”
mais nahora de salvar/serializar não me saí bem!

quero seriaizar um ArrayList de objetos “estoque” (estoklista):

public void salve(){

FileOutputStream file = new FileOutputStream(estoque.ser);

ObjectOutputStream oos = new ObjectOutputStream(file);

oos.writeObject(estoklista);

oos.close();

}
public void leia(){

FileInputStream fis = new FileInputStream(estoque.ser);

ObjectInputStream ois = new ObjectInputStream(fis);

ArrayList estoklista = (ArrayList ) ois.readObject();

ois.close();

}

o que pode estar errado?
vlw

5 Respostas

D

Qual o erro?

ironmarq
ArrayList<estoque>// não seria Estoque com letra 'E' maiúscula por se tratar de classe ?

Outra coisa, não estou vendo o devido tratamento das exceções, pois está utilizando API’s de IO em conjunto com recursos do SO e com isso muitos erros podem vir á ocorrer.
Dica: utilize as tags “code” de abertura e fechamento do menu e insira o código Java dentro.

mcirqueira

O erro deve ser por que você tem de usar try e cath para operações que podem dar erro, por exemplo, você quer salvar uma informação importante, aí o programa vai e dar erro e nem lhe apresenta a mensagem de erro, você acha que está salva a informação, e quando vai ver não está, como você fica? R= morrendo e raiva, rsrs.
Veja um exemplo:

try {                  
                File file = new File(&quot;Cadastro/Clientes cadastrados/&quot; + nome_do_arquivo + &quot;.txt&quot;);  
                // verifica se o arquivo existe  
                if (!file.exists()) {  
                    // se não existir cria o arquivo  
                    file.createNewFile();  
                }  
  
                JOptionPane.showMessageDialog(null, &quot;Cadastro/Clientes cadastrados/&quot; + nome_do_arquivo + &quot;.txt&quot;);  
                // cria um arquivo com append true para garantir a  
                // persistência dos dados anteriores  
                FileWriter writer = new FileWriter(file, true);  
                PrintWriter cadastro = new PrintWriter(writer);  
                // aqui diz que, se o arquivo for maior quer 0, significa que  existe dados nele, então para não sobrescrever o arquivo, adicione |==Novo registro==| 
                if (file.length() &gt; 0) {  
                    cadastro.println(&quot;|=================================Novo Registro=================================|&quot;);  
                }  
                cadastro.println(&quot;Cliente: &quot; + nome + &quot;\r\r\n&quot; + &quot;Endereço: &quot; + endereco + &quot;\r\r\n&quot; 
				                 + &quot;CEP: &quot; + cep + &quot;\r\r\n&quot; + &quot;Cidade: &quot; + cidade + &quot;\r\r\n&quot; 
								 + &quot;Estado: &quot; + estado + &quot;\r\r\n&quot; + &quot;País: &quot; + pais + &quot;\r\r\n&quot; 
								 + &quot;CPF: &quot; + cpf + &quot;\r\r\n&quot; + &quot;RG: &quot; + rg + &quot;\r\r\n&quot;  
                                 + &quot;Data de aniversário: &quot; + data_nascimento + &quot;\r\r\n&quot; + &quot;Número de telefone fixo: &quot; + numero_telefone + &quot;\r\r\n&quot; 
								 + &quot;Número de celular: &quot; + numero_celular + &quot;\r\r\n&quot; + &quot;E-mail: &quot; + email);  
                // descarrega garantindo que a ultima entrada no buffer será  
                // gravada  
                cadastro.flush();  
                cadastro.close();
              //agora que o tratamento de erros entra em ação, se não der para salvar, ele avisa                  
            } catch (IOException ex) {  
                ex.printStackTrace();  
                JOptionPane.showMessageDialog(null, &quot;Ocorreu um erro ao cadastrar &quot; + nome);  
            } catch (Exception ex) {  
                ex.printStackTrace();  
            }

você pode ver outro tratamento d erro na leitura do arquivo, segue meu programa em anexo.
Só avisando, o programa tem que está numa pasta onde tenha uma outra pasta Cadastro/Clientes cadastrados/ para ele poder salvar as informações.

M

IOException: java.io.NotSerializableException: estoque

D

Na sua classe estoque coloque assim

public class estoque implements Serializable

Feito!

Criado 26 de janeiro de 2012
Ultima resposta 26 de jan. de 2012
Respostas 5
Participantes 4