De ahí el lio tremendo que tengo con un ejercicio de clase que nos han mandado.
Pego el enunciado y comento cual es el problema.
Se trata de hacer una aplicación en Java que gestione los clientes de una empresa. Esos datos, se almacenarán en un fichero serializado, denominado clientes.dat.
Los datos que se almacenarán sobre cada cliente son:
NIF.
Nombre.
Teléfono.
Dirección.
Deuda.
Mediante un menú se podrán realizar determinadas operaciones:
Añadir cliente. Esta opción pedirá los datos del cliente y añadirá el registro correspondiente en el fichero.
Listar clientes. Recorrerá el fichero mostrando los clientes almacenados en el mismo.
Buscar clientes. Pedirá al usuario el nif del cliente a buscar, y comprobará si existe en el fichero.
Borrar cliente. Pedirá al usuario el nif del cliente a borrar, y si existe, lo borrará del fichero.
Borrar fichero de clientes completamente. Elimina del disco el fichero clientes.dat
Salir de la aplicación.
Bueno, pues el problema es que tras clear la clase y el main, no me añade ninguna linea al fichero clientes.dat, con lo que me he quedado superatascado en el apartado 1 y no puedo seguir.
Pego los códigos y a ver que me podeis decir. Muchisimas gracias de antemanos.
Clase principal:
Código
package tarea6; /** * * @author adec29 */ //Se implementa la interfaz serializable para que el objeto Cliente pueda //escribir todos sus datos en fichero. static ManejaClientes cliente; /** * @param args the command line arguments * @throws java.lang.Exception */ /** * Creo un cliente por defecto. No se añade al archivo. */ cliente = new ManejaClientes(nombred, nifd, tlfd, dird, deudad); /** * Menú * Presenta el menú de operaciones con todas las opciones disponibles */ int opcion = 0; do{ try{ } opcion = 10; } switch (opcion){ case 0://Salir del menú break; case 1://Añadir cliente //Se crea un nuevo objeto (cliente) de la clase ManejaClientes // Se invoca al constructor de la clase para que nos guarde un objeto c // con los datos recién introducidos ManejaClientes c = new ManejaClientes(nombre, nif, tlf, dir, deuda); //Añadimos el nuevo cliente al fichero clientes.dat invocando el método EscribeFichero() ManejaClientes.EscribeFichero(ruta, c.getNombre(), c.getNif(), c.getDireccion(), c.getTlf(), c.getDeuda()); break; case 2://Listar clientes break; case 3://Buscar clientes break; case 4://Borrar cliente break; case 5://Borrar fichero de clientes. Ojo que no hay vuelta atrás. break; default: } }while (opcion !=0); } }
Y la clase con sus constructores y métodos.
Código
package tarea6; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Scanner; /** * * @author droigor */ //Habilitamos la entrada de datos por teclado //Atriutos private static boolean check; /** * Constructor de la clase * Los datos son comprobados dentro del método que los crea * @param nombre * @param nif * @param telefono * @param direccion * @param deuda * @throws Exception */ ManejaClientes.check = false; this.nombre = nombre; this.nif = nif; this.telefono = telefono; this.direccion = direccion; this.deuda = deuda; } // Métodos set y get /** * setNombre() * @return nombre * Nos permite establecer el nombre del cliente. Verifica que el nombre * introducido es correcto siempre y cuando la longitud del String nombre * se halle entre 3 y 40 caracteres. */ do{ nombre = teclado.nextLine(); if ((nombre.length() < 3) || (nombre.length() > 40)) } while ((nombre.length() < 3) || (nombre.length() > 40)); return nombre; } /** * setNif() * @return nif * Nos permite establecer el nif del cliente. Voy a dar por correcto una * cadena de 9 caracteres */ do{ nif = teclado.nextLine(); if ((nif.length() < 9) || (nif.length() > 9)) } while ((nif.length() < 9) || (nif.length() > 9)); return nif; } /** * setTlf() * @return tlf * Nos permite establecer el teléfono del cliente. Voy a dar por correcto una * cadena de 9 caracteres */ do{ tlf = teclado.nextLine(); if ((tlf.length() < 9) || (tlf.length() > 9)) } while ((tlf.length() < 9) || (tlf.length() > 9)); return tlf; } /** * setDireccion() * @return dir * Nos permite establecer la dirección del cliente. Asume que la dirección * introducida es correcta siempre y cuando la longitud del String dir * se halle entre 3 y 40 caracteres. */ do{ dir = teclado.nextLine(); if ((dir.length() < 3) || (dir.length() > 40)) } while ((dir.length() < 10) || (dir.length() > 50)); return dir; } /** * setDeuda * Nos permite establecer la cantidad que debe el cliente * @return deuda */ String deuda; deuda = teclado.next(); return deuda; } /** * getNif * Nos devuelve el nif del cliente * @return nif */ return nif; } /** * getNombre * Nos devuelve el nombre del cliente * @return nombre */ return nombre; } /** * getTlf * Nos devuelve el teléfono del cliente * @return teléfono */ return telefono; } /** * getDireccion * Nos devuelve la dirección del cliente * @return direccion */ return direccion; } /** * getDeuda * Nos devuelve la deuda que tiene el cliente * @return deuda */ return deuda; } /** * menu() * Menú de selección. Presenta el menú de opciones * @return opcion */ return opcion; } /** * escribeFichero() * Nos permite escribir datos en el fichero clientes.dat * @param ruta - La ruta del fichero * @param nombre * @param nif * @param telefono */ //Inicializamos los objetos fichero y registro que usaremos más adelante // para crear un fichero o añadirle datos en la ruta definida en los // atributos de la clase FileWriter fichero; PrintWriter registro; try{ //Creo un ofjeto fichero. El true detrás de ruta es para poder añadir //contenido al fichero si existe, si no existe se crea. registro.println(); }catch (Exception ex){//Es la excepción más general y se refiere a cualquier error de entrada y salida } } /** * LeerFichero() * Nos permite leer del fichero clientes.dat * @param ruta * @return * @throws FileNotFoundException */ try{ File fichero; FileReader registro; //Creo el objeto del archivo a leer //Creo un objeto FileReader que abrirá el flujo de datos a leer //Creo un lector en buffer para recopilar los datos de registro //Creo una variable lectura que usaré más adelante para almacenar //la lectura del archivo y una variable de comprobación //Con este while leemos el archivo linea a linea hasta que se acaba // el fichero. Si la variable check tiene datos, se acumulan en la //variable lectura. Si check es nula ya se ha leido todo el archivo while (true){ check = br.readLine(); if (check != null) lectura=lectura+check+"n"; else break; } br.close(); registro.close(); return lectura; } } return null; } }
Bueno, pues aquí está.
Un saludo a todos.
Rodri.