• Sábado 21 de Septiembre de 2024, 23:24

Autor Tema:  Guardar ArrayList en un archivo  (Leído 18164 veces)

OptimuZ

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Guardar ArrayList en un archivo
« en: Jueves 2 de Diciembre de 2010, 10:28 »
0
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
  1.     public static boolean grabarLista(ArrayList lista) {
  2.         boolean respuesta = false;
  3.         String mensaje = "";
  4.         String archivo = "lista.txt";
  5.         if (!lista.isEmpty()) {
  6.             try {
  7.                 ObjectOutputStream ficheroSalida = new ObjectOutputStream(new FileOutputStream(new File(archivo)));
  8.                 ficheroSalida.writeObject(lista);
  9.                 ficheroSalida.flush();
  10.                 ficheroSalida.close();
  11.                 mensaje = "tDatos de personas guardados correctamente en " + archivo + ".";
  12.                 System.out.println("tDatos de personas guardados correctamente en " + archivo + ".");
  13.                 respuesta = true;
  14.             } catch (FileNotFoundException fnfe) {
  15.                 mensaje = "tError al grabar personas: El fichero " + archivo + " no existe. ";
  16.                  System.out.println("tError: El fichero " + archivo + " no existe. ");
  17.                  respuesta = false;
  18.             } catch (IOException ioe) {
  19.                 mensaje = "tError: Falló la escritura de las personas en el fichero" + archivo + ". ";
  20.                 System.out.println("tError: Falló la escritura en el fichero" + archivo + ". ");
  21.                 respuesta = false;
  22.             }
  23.         } else {
  24.              mensaje = "tNo hay datos de personas que guardar. La lista está vacía.";
  25.              System.out.println("tNo hay datos que guardar. La lista está vacía. ");
  26.              respuesta = false;
  27.         }
  28.         return respuesta;
  29.         }
  30.  

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
  1.     public static ArrayList<Alumno> cargar(File fichero){
  2.         ArrayList<Alumno> lista = null;
  3.         try {
  4.             ObjectInputStream ficheroEntrada = new ObjectInputStream(new FileInputStream(fichero));
  5.             lista = (ArrayList) ficheroEntrada.readObject();
  6.             ficheroEntrada.close();
  7.             if (lista == null) {
  8.                 System.out.println("<Lista peliculas vacio>");
  9.             } else {
  10.                 System.out.println("<Lista peliculas llena>");
  11.             }
  12.             return lista;
  13.         } catch (ClassNotFoundException cnfe) {
  14.             return null;
  15.         } catch (FileNotFoundException fnfe) {
  16.             return null;
  17.         } catch (IOException ioe) {
  18.             return null;
  19.         }
  20.     }
  21.  

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

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Guardar ArrayList en un archivo
« Respuesta #1 en: Jueves 2 de Diciembre de 2010, 12:13 »
0
¿toString()? ¿Dejar el ArrayList genérico (sin <Alumno>)?

OptimuZ

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Guardar ArrayList en un archivo
« Respuesta #2 en: Jueves 2 de Diciembre de 2010, 13:40 »
0
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
  1.     public static ArrayList cargar(File fichero){
  2.         ArrayList lista = null;
  3.         try {
  4.             ObjectInputStream ficheroEntrada = new ObjectInputStream(new FileInputStream(fichero));
  5.             lista = (ArrayList) ficheroEntrada.readObject();
  6.             ficheroEntrada.close();
  7.             if (lista == null) {
  8.                 System.out.println("<Lista peliculas vacio>");
  9.             } else {
  10.                 System.out.println("<Lista peliculas llena>");
  11.             }
  12.             return lista;
  13.         } catch (ClassNotFoundException cnfe) {
  14.             return null;
  15.         } catch (FileNotFoundException fnfe) {
  16.             return null;
  17.         } catch (IOException ioe) {
  18.             return null;
  19.         }
  20.     }
  21.  

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
  1.     private void btnCargar_actionPerformed(ActionEvent e) {
  2.     File fichero = new File("alu_deg.txt");
  3.                 if (fichero.exists()) {
  4.                     listaAlumnos.clear();
  5.                     listaAlumnos = Funciones.cargar(fichero);
  6.                     btnGuardar.setEnabled(true);
  7.                 } else {
  8.                     listaAlumnos.clear();
  9.                 }
  10.                
  11.     }
  12.  

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

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Guardar ArrayList en un archivo
« Respuesta #3 en: Jueves 2 de Diciembre de 2010, 13:47 »
0
Yo creo que no puedes cargar un array así desde un fichero. Prueba a cargar elemento por elemento.