Salvar Arquivo em um Array list depois ler.(Duvida)

3 respostas
Dariuns

Bom galera to criando um programinha que vc fa o cadastro depois salva ele em um arquivo. Depois vc abre o programa e ele carrega as informaçoes do mesmo.
Segue o codigo:

Ler o arquivo
public void salvarEmArquivo(Pessoas p){

       try {

          FileOutputStream arquivo = new FileOutputStream("dados3.dat");
          ObjectOutputStream  out = new ObjectOutputStream(arquivo);
          out.writeObject(p);
          JOptionPane.showMessageDialog(this, "Arquivo Serializado.");
       } catch (IOException e) {

          JOptionPane.showMessageDialog(this, "Erro na hora de gravar o arquivo");
       }


        }

Essa parte ele ta gravando no arquivo sem problemas.

public void carregarDados(){
           try {
                        
			FileInputStream arq = new FileInputStream("dados3.dat");
			ObjectInputStream in =  new ObjectInputStream(arq);
//JOptionPane.showMessageDialog(this, "Erro na hora de gravar o arquivo");
                        
			Pessoas p =(Pessoas)in.readObject();
			System.out.println("Nome: " + p.getNome());
//                        this.curso1.setSelected(p.isCurso1());
			//System.out.println("Idade: " + p.getIdade());

                      while (p != null) {
                         System.out.println("Nome: " + p.getNome());
                         dados.add(p);
                       
                 }


		}
		catch(Exception ex){
               // JOptionPane.showMessageDialog(this, ex);
                    ex.printStackTrace();  
		}
       }

    public void cadCliente() throws IOException{
        
    
                try {
                    FileInputStream isTwo = new FileInputStream("dadosCliente.txt");
                    ObjectInputStream dsTwo = new ObjectInputStream(isTwo);
                    Pessoas linha;


                  while ((linha = (Pessoas)dsTwo.readObject()) != null) {
                       try {
                    System.out.println("Nome: " + linha.getNome());

                          Pessoas dados =(Pessoas)dsTwo.readObject();
                       } catch (Exception e) {

                       }

                   }
               } catch (Exception e) {

               }

            }

Agora nesta parte que ele carrega o codigo nao ta adicionando no ArrayList. Ja quebrei a cabeça mais nao achei o problema. Se alguem tiver uma ideia ^^

3 Respostas

ViniGodoy

A classe que você está serializando é a classe Pessoas, não a classe ArrayList. Para isso ser possível, Pessoas deve implementar corretamente os métodos da interface Serializable.

Dariuns

Ja fiz isso o problema esta na hora de inserir o objeto pessoa no arrayList, porque quando vou ler o arquivo apartir da Pessoa que esta no ArrayLista fala que esta null.

Neste programa tenho q armazena os dados e depois ler usando um arquivo, ai depois tenho q colocar botoes pra ir pro primeiro, ultimo, proximo e anterior.

Ta ai o codigo da classe pessoa:

import java.io.Serializable;
import java.util.ArrayList;


public class Pessoas implements Serializable{
	private String nome;
	private ArrayList<String> interesses;
	private boolean sexo;
	private boolean curso1;
	private boolean curso2;
	private boolean curso3;
	private String uf;

	public Pessoas() {
		super();
		interesses = new ArrayList<String>();
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public ArrayList<String> getInteresses() {
            System.out.println(interesses+"      andreeeeeeeee");
		return interesses;
	}

	public void setInteresses(ArrayList<String> interesses) {
		this.interesses = interesses;
	}

	public boolean isSexo() {
		return sexo;
	}

	public void setSexo(boolean sexo) {
		this.sexo = sexo;
	}

	public boolean isCurso1() {
		return curso1;
	}

	public void setCurso1(boolean curso1) {
		this.curso1 = curso1;
	}

	public boolean isCurso2() {
		return curso2;
	}

	public void setCurso2(boolean curso2) {
		this.curso2 = curso2;
	}

	public boolean isCurso3() {
		return curso3;
	}

	public void setCurso3(boolean curso3) {
		this.curso3 = curso3;
	}

	public String getUf() {
		return uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}




}
moacirjava

Quando uma classe é serializada e depois deserializada, o seu construtor não é executado, como vc está instanciando seu arraylist dentro do construtor é provável que seja esse o erro. Não tenho certeza, mas tenta instanciar seu arrayList fora do construtor.

Criado 10 de abril de 2010
Ultima resposta 11 de abr. de 2010
Respostas 3
Participantes 3