Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/02/2013, 03:20
atom182
 
Fecha de Ingreso: julio-2012
Ubicación: en mi casa
Mensajes: 37
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación guardar y cargar un arraylist

estoy haciendo un arraylist de personas, al momento de hacer una persona creo un objeto persona, mi problema es q no se como hacer para q toda esa informacion del arraylist se guarde en un archivo de texto, y posteriormente cargar el archivo de texto y volverlo a poner dentro del arraylist...

he visto cosas muy vagas de usar el objectinputstream y el objectoutputstream, pero la verdad no se ni como usarlos...

me podrian ayudar?

les dejo mi codigo:

Código:
class MiSistema
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sistema;
import java.util.ArrayList;
import java.util.Iterator;


/**
 *
 * @author Daniel Chavez
 */

import javax.swing.*;



public class MiSistema implements Iterable<Persona>{

 //Constructor: se inicializa el ArrayList para usuarios (Sin tamaño)
public MiSistema() {
	array=new ArrayList<Persona>();
}

@Override
public Iterator<Persona> iterator() {
    return array.iterator();
}


public void registrarPersona(MiSistema sistema){
    String nombre = JOptionPane.showInputDialog("Deme su nombre");
    String edad = JOptionPane.showInputDialog("Deme su edad");
    String sexo = JOptionPane.showInputDialog("Deme su sexo \n"
                                             + "[1] Masculino"
                                             + "[2] Femenino");
    int sex = Integer.parseInt(sexo);
    
    if (sex == 1){
        sexo = "Masculino";
    }
    else if(sex == 2){
        sexo = "Femenino";
    }
    
    String ocupacion = JOptionPane.showInputDialog("A que se dedica?");
    
    int anos = Integer.parseInt(edad);
    	
    array.add(new Persona(nombre,anos,sexo,ocupacion));
    
    imprimir(sistema);
    
}

public void eliminarPersona(MiSistema sistema){

    String numero = JOptionPane.showInputDialog("Inserte el numero del registro "
                                                + "que desea eliminar");
     int num = Integer.parseInt(numero);
     int tamano = array.size() - 1;
     
     if (tamano >= 0){
     num = num - 1;
     array.remove(num);
     }
     else{
         JOptionPane.showMessageDialog(null,"No hay personas que eliminar");
     }
     imprimir(sistema);
}

public void cargarArchivo(){

    System.out.print("carga\n");

}

public void guardarArchivo(){

    System.out.print("guarda\n");

}

public void imprimir(MiSistema sistema){
    int i = 1;
    Iterator<Persona> it=sistema.iterator();

                /* El Iterador tiene un metodo hasNext(), indica que mientras
                    haya un elemento adelante en el ArrayList, el ciclo continua
                  */
		while (it.hasNext()){

                /*No se necesita casting (El iterador es tipo usuario)
                   Se imprime como cadena puesto que se sobreescribió el método
                   toString() de la clase usuario;
                 */
                        System.out.print("["+ i +"] ");
			System.out.println(it.next());
                        i++;
        }
                
}

private ArrayList<Persona> array;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int op = 0;
        MiSistema sistema = new MiSistema();
        
        
        while(op != 5){
           String opc = JOptionPane.showInputDialog("[1] Crear nueva persona\n"
                                        + "[2] Eliminar persona\n"
                                        + "[3] Guardar archivo\n"
                                        + "[4] Cargar Archivo\n"
                                        + "[5] Salir\n");
            
            op = Integer.parseInt(opc);
            
            if (op == 1){
                sistema.registrarPersona(sistema);
            }
            
            else if (op == 2){
                sistema.eliminarPersona(sistema);
            }
            
            else if (op == 3){
                sistema.guardarArchivo();
            }
            
            else if (op == 4){
                sistema.cargarArchivo();
            }
            
            else if (op >= 6){
                op = 0;
            }
            
        }
        
        
    
    
    }
}
Código:
class persona
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sistema;

/**
 *
 * @author Daniel Chavez
 */
public class Persona {
    
    private String nombre;
    int edad;
    private String sexo;
    private String ocupacion;
  
    
    public Persona(){
    
    }
    
    public Persona(String nombre, int edad, String sexo, String ocupacion){
    
        getNombre(nombre);
        getEdad(edad);
        getSexo(sexo);
        getOcupacion(ocupacion);
        
        //toString();
        //toXML();
        
    }
    
    
    private String setNombre(){
        return nombre;
    }
    
    private void getNombre(String nombre){
        this.nombre = nombre;
    }
    
    private int setEdad(){
        return edad;
    }
    
    private void getEdad(int edad){
        this.edad = edad; 
    }
    
    private String setSexo(){
        return sexo;
    }
    
    private void getSexo(String sexo){
        this.sexo = sexo;
    }
    
    private String setOcupacion(){
         return ocupacion;
    }
    
    private void getOcupacion(String ocupacion){
       this.ocupacion = ocupacion;
    }
    
  
    @Override
    public String toString(){
        String registro;
        
        registro = setNombre() + " " + setEdad() + " " + setSexo() + " " + 
                   setOcupacion() + " " + toXML();
        
       
        
        return registro;
    }
    
     public String toXML(){
        
         String XML = "<Persona><Nombre>" + setNombre() + "</Nombre>"
                    + "<Edad>" + setEdad() + "</Edad><Sexo>" + setSexo()
                    + "</Sexo><Ocupacion>" + setOcupacion() + "</Ocupacion>"
                    +"</Persona>\n";
         
         
         return XML;
        
    }
    
}