Guardar ArrayList en archivo txt

Iniciado por Arkzas, 8 Junio 2017, 05:37 AM

0 Miembros y 1 Visitante están viendo este tema.

Arkzas

Buenas, alguno me podría ayudar indicando, cual codigo puedo utilizar para guardar un arraylist en un txt y abrirlo nuevamente.

Todos los datos del arraylist se toman de casillas ya guardado las posiciones no se que hacer.

Para "Imprimir" este arraylist que codigo se utiliza o clase se puede utilizar? :huh:

Gracias.

3n31ch

Tienes que serializar el arraylist y posteriormente guardarlo en un archivo.

(Normalmente me tomaría mas tiempo explicándolo, pero seguramente encontraras info utilizando el buscador de este foro {Yo ya he contestado dos el mes anterior}).

De igual forma aquí tienes un ejemplo que te podría ayudar:

Código (java) [Seleccionar]
public class Employee implements Serializable { 
    int id;
    String name;
    String department;
   
    public Employee(int id, String name, String department) {
        this.id = id;
        this.name = name;
        this.department = department;
    }
   
    public String toString() {
        return "Employee(" + id + "," + name + "," + department + ")";
    }
   
    public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
        ArrayList<Employee> employees = new ArrayList<>();
        employees.add(new Employee(0, "Jose", "Departamento A"));
        employees.add(new Employee(1, "Alex", "Departamento B"));
        employees.add(new Employee(2, "Ignacio", "Departamento C"));
       
        FileOutputStream fout=new FileOutputStream("C:\\Users\\Nacho\\Desktop\\output.txt"); 
        ObjectOutputStream out= new ObjectOutputStream(fout); 
        out.writeObject(employees);
        out.close();

       
        FileInputStream fin = new FileInputStream("C:\\Users\\Nacho\\Desktop\\output.txt");
        ObjectInputStream ois = new ObjectInputStream(fin);
        ArrayList<Employee> employees2 = (ArrayList<Employee>)ois.readObject();
        for(Employee employee : employees2) System.out.println(employee);
    } 
}


Básicamente lo que hago ahí es generar una clase Employee con tres atributos, luego en el main genero un ArrayList con tres Employees. Posterior a esto guardo los datos serializados en un archivo .txt el cual leo y muestro.

PD: El archivo resultante te quedara como esto:

aced 0005 7372 0013 6a61 7661 2e75 7469
6c2e 4172 7261 794c 6973 7478 81d2 1d99
c761 9d03 0001 4900 0473 697a 6578 7000
0000 0377 0400 0000 0373 7200 1165 6c68
6163 6b65 722e 456d 706c 6f79 6565 9c12
66fb 27b3 a77a 0200 0349 0002 6964 4c00
0a64 6570 6172 746d 656e 7474 0012 4c6a
6176 612f 6c61 6e67 2f53 7472 696e 673b
4c00 046e 616d 6571 007e 0003 7870 0000
0000 7400 0e44 6570 6172 7461 6d65 6e74
6f20 4174 0004 4a6f 7365 7371 007e 0002
0000 0001 7400 0e44 6570 6172 7461 6d65
6e74 6f20 4274 0004 416c 6578 7371 007e
0002 0000 0002 7400 0e44 6570 6172 7461
6d65 6e74 6f20 4374 0007 4967 6e61 6369
6f78

Arkzas

Muchas Gracias ya con este ejemplo tengo una idea a lo que tengo que hacer  ;-)

cunian

Hola amigo, aqui te paso dos metodos con los que puedes guardar y cargar datos de los archivos planos.

Con este metodo puedes guardar todos los datos que tengas dentro de tu Arraylist.

Código (java) [Seleccionar]
   //CREA UN OBJETO DE TIPO FILE PARA GENERAR LA RUTA DEL ARCHIVO
    public static File nombre_de_objeto_fichero = new File("src/Archivos_Planos/REmpleados.txt");
    //SE CREA EL ARRAYLISY
    public static Arraylist nombre_de_Arraylist = new Arraylist<>();
   
public static void guardar_datos_de_arraylist() {
        try {
            //SE CREA UN OBJETO DE TIPO BUFFEREDWRITER PARA PODER ESCRIBIR DENTRO DEL ARCHIVO
           
            BufferedWriter bw = new BufferedWriter(new FileWriter(nombre_de_objeto_fichero));
           
            //DEPENDIENDO DEL TIPO DE OBJETOS QUE ESTE GUARDANDO DENTRO DEL ARRAYLIST, RECORRES EL
            //ARRAY Y SEPARAS CADA ATRIBUTO POR TABULACION O COMO QUIERAS.
            //Y AL FINAL DE CADA LINEA HACES UN SALTO.
           
            for (Abs_empleados e : nombre_de_Arraylist) {
                String fecha1 = new SimpleDateFormat("dd/MM/yyyy").format(e.getFecha_nacimiento());
                bw.write(e.getDocumento() + "\t" + e.getNombre_emple() + "\t" + e.getNum_seguridad_s() + "\t" + e.getDireccion()
                        + "\t" + e.getSueldo() + "\t" + e.getGenero() + "\t" + e.getNumero_hijos() + "\t" + fecha1 + "\t" + e.getDepartamento_asignado() + "\r\n");
            }
            bw.close();
        } catch (Exception ex) {
            //Captura un posible error le imprime en pantalla   
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }