Programación General > Java
Guardar ArrayList en un archivo
(1/1)
OptimuZ:
Buenos dias, tengo un problema al guardar un arrayList, y es que el caso en netbeans me funciona perfectamente, pero cuando copio el codigo y lo pego en Jdeveloper, me pide que lo convierta a objeto, sino lo hago pe tira un error de compilación. Este de aqui es el codigo de guardar:
--- Código: Java --- public static boolean grabarLista(ArrayList lista) { boolean respuesta = false; String mensaje = ""; String archivo = "lista.txt"; if (!lista.isEmpty()) { try { ObjectOutputStream ficheroSalida = new ObjectOutputStream(new FileOutputStream(new File(archivo))); ficheroSalida.writeObject(lista); ficheroSalida.flush(); ficheroSalida.close(); mensaje = "tDatos de personas guardados correctamente en " + archivo + "."; System.out.println("tDatos de personas guardados correctamente en " + archivo + "."); respuesta = true; } catch (FileNotFoundException fnfe) { mensaje = "tError al grabar personas: El fichero " + archivo + " no existe. "; System.out.println("tError: El fichero " + archivo + " no existe. "); respuesta = false; } catch (IOException ioe) { mensaje = "tError: Falló la escritura de las personas en el fichero" + archivo + ". "; System.out.println("tError: Falló la escritura en el fichero" + archivo + ". "); respuesta = false; } } else { mensaje = "tNo hay datos de personas que guardar. La lista está vacía."; System.out.println("tNo hay datos que guardar. La lista está vacía. "); respuesta = false; } return respuesta; }
Jdeveloper me marca que haga conversión en la linea 8:
ficheroSalida.writeObject(lista);
El caso es que en el metodo de carga exactamente igual, este es el metodo de carga:
--- Código: Java --- public static ArrayList<Alumno> cargar(File fichero){ ArrayList<Alumno> lista = null; try { ObjectInputStream ficheroEntrada = new ObjectInputStream(new FileInputStream(fichero)); lista = (ArrayList) ficheroEntrada.readObject(); ficheroEntrada.close(); if (lista == null) { System.out.println("<Lista peliculas vacio>"); } else { System.out.println("<Lista peliculas llena>"); } return lista; } catch (ClassNotFoundException cnfe) { return null; } catch (FileNotFoundException fnfe) { return null; } catch (IOException ioe) { return null; } }
me dice que tengo que realizar conversión en la linea 5:
lista = (ArrayList) ficheroEntrada.readObject();
Para la lectura del archivo tuve que realizar el casting, por que es el formato con el que lo guarde, el caso es que no funciona en JDeveloper, y en netbeans si, ¿de que otra manera puedo guardar un ArrayList en un archivo y luego cargarlo en un arrayList?
Gracias y un saludo.
Os digo que estos metodos
m0skit0:
¿toString()? ¿Dejar el ArrayList genérico (sin <Alumno>)?
OptimuZ:
Bien el metodo guardar ya funciona, tuve que generalizar como me comentastes, sin <Alumno>, y colocar el toString() en la lista antes de guardar.
Pero ahora lo que me falta es la carga del archivo, y pasarlo a un arrayList, me das a entender que con el toString() pueda solucionarlo, pero me sigue tirando el error, pero esta vez en la ejecución de la aplicación.
--- Código: Java --- public static ArrayList cargar(File fichero){ ArrayList lista = null; try { ObjectInputStream ficheroEntrada = new ObjectInputStream(new FileInputStream(fichero)); lista = (ArrayList) ficheroEntrada.readObject(); ficheroEntrada.close(); if (lista == null) { System.out.println("<Lista peliculas vacio>"); } else { System.out.println("<Lista peliculas llena>"); } return lista; } catch (ClassNotFoundException cnfe) { return null; } catch (FileNotFoundException fnfe) { return null; } catch (IOException ioe) { return null; } }
En la linea 5 es donde me da el error, estoy seguro que tiene que ser algo del casting, pero no lo veo, he probado con ArrayList <String> y sigue igual, y en este metodo esta generalizado el arrayList, por eso no creo que alla problema.
Por otro lado el metodo que utilizo en otra clase, es este:
--- Código: Java --- private void btnCargar_actionPerformed(ActionEvent e) { File fichero = new File("alu_deg.txt"); if (fichero.exists()) { listaAlumnos.clear(); listaAlumnos = Funciones.cargar(fichero); btnGuardar.setEnabled(true); } else { listaAlumnos.clear(); } }
La linea 6 del metodo, es la que dice que hay que convertirlo, que va directamente al metodo de carga de la clase funciones, no se donde más mirar, ¿Algún consejo?.
Un saludo y muchas gracias.
m0skit0:
Yo creo que no puedes cargar un array así desde un fichero. Prueba a cargar elemento por elemento.
Navegación
Ir a la versión completa