Java - Borrar registro en fichero

 
Vista:
Imágen de perfil de tesi

Borrar registro en fichero

Publicado por tesi (37 intervenciones) el 24/03/2015 14:23:13
Buenas soy nuevo en el foro y tengo una gran duda que no se como resolver a ver si me pudierais ayudar, gracias. Una parte del ejercicio me pide:
-Borrar empleado. Pedirá al usuario el número de seguro social del empleado a borrar, y si existe, lo borrará del fichero.
Yo en el fichero tengo lo siguiente:
Nombre: Juan, Nº Seguro Social: 2222a
Nombre: Jose, Nº Seguro Social: 3333b
Nombre: Maria, Nº Seguro Social: 4444c
Y por teclado le introduzco el Nº Seguro Social de uno de los empleados y QUIERO QUE BORRE TODA LA LINEA y no la borra, a no ser que escriba la linea "Nombre: Jose, Nº Seguro Social: 3333b" por ejemplo....
CODIGO:
public void borrarEmpleado () {
File f = new File("C:\\Users\\Tesi\\Documents\\NetBeansProjects\\GestionEmpleados\\src\\usa_empleado\\empleados.dat");
System.out.println("Introduce nº seguridad social del empleado a borrar: ");
String lineaBorrar=teclado.nextLine();
try {
if (!f.isFile()) {
System.out.println("El parámetro no es un archivo existente");
return;
}
// Construir el nuevo archivo que posteriormente se cambió el nombre al nombre de archivo original .
File tempFile = new File(f.getAbsolutePath() + ".dat");
BufferedReader br = new BufferedReader(new FileReader(f));
PrintWriter pw = new PrintWriter(new FileWriter(tempFile));
String line = null;
// Leer desde el archivo original y escribir en el nuevo
// menos que los datos se adapte al contenido que deben eliminarse.
while ((line = br.readLine()) != null) {
if (!line.trim().equals(lineaBorrar)) {
pw.println(line);
pw.flush();
}
}
pw.close();
br.close();
// Eliminar el archivo original
if (!f.delete()) {
System.out.println("No se pudo borrar el archivo");
return;
}
// Cambie el nombre del nuevo archivo al nombre de archivo del archivo original tenía .
if (!tempFile.renameTo(f))
System.out.println("No se puede cambiar el nombre de archivo");
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de tesi

Borrar registro en fichero

Publicado por tesi (37 intervenciones) el 24/03/2015 14:44:37
Ya me han ayudado, tengo la solucion :)

En mi variable lineaBorrar solo tiengo el número de la Seguridad Social, no el contenido de la línea, por lo que if (!line.trim().equals(lineaBorrar)) nunca será verdadero

Seria con: if (!line.trim().contains(lineaBorrar))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar