Foros del Web » Programación para mayores de 30 ;) » Java »

Eliminar archivo temporal

Estas en el tema de Eliminar archivo temporal en el foro de Java en Foros del Web. Buenas tardes, Tengo que eliminar información de un archivo txt y para ello voy copiando la información en uno temporal , luego tengo que eliminar ...
  #1 (permalink)  
Antiguo 22/04/2015, 06:52
 
Fecha de Ingreso: diciembre-2007
Mensajes: 24
Antigüedad: 16 años, 4 meses
Puntos: 0
Eliminar archivo temporal

Buenas tardes,

Tengo que eliminar información de un archivo txt y para ello voy copiando la información en uno temporal , luego tengo que eliminar ese temporal y renombrarlo...
Da error ya en el delete() ( existiendo ese archivo temporal)

Código:
 public void EliminarLibro (String cadena)
      {
          try
            {
                    File archivoC= new File (archivo)   ; 
                    File archivoTemp = new File (archivoC.getAbsolutePath() + ".tmp")  ;
                    BufferedReader br= new BufferedReader (new FileReader(archivo));
                    PrintWriter pw = new PrintWriter (new FileWriter (archivoTemp) );
                     String linea=null;
                        while ((linea = br.readLine())!=null)
                            {
                                 if(!linea.trim().equals(cadena))
                                 {
                                      pw.println(linea);
                                      pw.flush();
                                 }
                            }
                    pw.close();
                    br.close();
           if (!archivoC.delete())
                {
                    System.out.println("No se puede eliminar el archivo");
                    return;
                }
             if (!archivoTemp.renameTo(archivoC))
                
                    System.out.println("No se puede renombrar el archivo");
               
               
        }
        catch (IOException ex)
        {
             ex.printStackTrace();
       
    }    
}
  #2 (permalink)  
Antiguo 22/04/2015, 07:45
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Eliminar archivo temporal

Buenas,

De donde sale la variable archivo?

La utilizas en algun otro metodo?


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 22/04/2015, 13:33
 
Fecha de Ingreso: diciembre-2007
Mensajes: 24
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Eliminar archivo temporal

Hola,

Este es el codigo completo...

Código Java:
Ver original
  1. public class HerramientasLibreria
  2. {
  3.     Libreria libro;
  4.     String archivo="libros.txt";
  5.    //  private static final String archivo="libros.txt";
  6.    
  7.     public HerramientasLibreria()
  8.     {
  9.    
  10.  
  11.     }
  12.    
  13.  public void BuscarLibro(String isbn)
  14.     {
  15.         String cadena;
  16.       try {
  17.         FileReader f= new FileReader(archivo);
  18.         BufferedReader b= new BufferedReader(f);
  19.         while ((cadena=b.readLine())!=null)
  20.             {
  21.               if(cadena.indexOf(isbn)!=-1)
  22.                 {
  23.                     EliminarLibro(cadena);
  24.                 }
  25.  
  26.             }
  27.             b.close();
  28.         }
  29.  
  30.      catch (Exception e)
  31.     {
  32.      
  33.         System.out.print("Error, error");
  34.     }
  35.     }
  36. public  void MostrarLibros ()  //throws FileNotFoundException
  37.     {
  38.         String cadena;
  39.         System.out.print("entrar!");
  40.       // String archivo="libros.txt";
  41.       try {
  42.         FileReader f= new FileReader(archivo);
  43.         BufferedReader b= new BufferedReader(f);
  44.         while ((cadena=b.readLine())!=null)
  45.             {
  46.                 System.out.println(cadena);
  47.                
  48.             }
  49.             b.close();
  50.         }
  51.  
  52.      catch (Exception e)
  53.     {
  54.      
  55.         System.out.print("Error, error");
  56.     }
  57.    
  58. }
  59.     public void AnadirLibros()
  60.         {
  61.                 String cadena;
  62.                
  63.          try
  64.             {
  65.                  InputStreamReader leer = new InputStreamReader(System.in);
  66.                  BufferedReader buff = new BufferedReader(leer);
  67.                  System.out.println("ISBN : ");
  68.                  cadena = buff.readLine();
  69.                  cadena+=" ";
  70.                  System.out.println("Precio : ");
  71.                  cadena+=buff.readLine();
  72.                  cadena+=" ";
  73.                  System.out.println("IVA : ");
  74.                  cadena+=buff.readLine();
  75.                  cadena+=" ";
  76.                  System.out.println("Precio + IVA : ");
  77.                  cadena+=buff.readLine();
  78.                  cadena+=" ";
  79.                  System.out.println("Cantidad : ");
  80.                  cadena+=buff.readLine();
  81.                  cadena+=" ";
  82.                  BufferedWriter archivoFinal = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(archivo, true)));
  83.                  archivoFinal.newLine();
  84.                  archivoFinal.write(cadena);
  85.                  archivoFinal.close();
  86.                  System.out.println("Libro añadido de forma exitosa");
  87.              }
  88.          catch (Exception ex)
  89.              {
  90.                  System.out.println("No se ha podido añadir de forma correcta");
  91.              }
  92.    
  93.  
  94.        
  95.  
  96.         }
  97.       public void EliminarLibro (String cadena)
  98.       {
  99.           try
  100.             {
  101.                     File archivoC= new File (archivo)   ;
  102.                     File archivoTemp = new File (archivoC.getAbsolutePath() + ".tmp")  ;
  103.                     BufferedReader br= new BufferedReader (new FileReader(archivo));
  104.                     PrintWriter pw = new PrintWriter (new FileWriter (archivoTemp) );
  105.                      String linea=null;
  106.                         while ((linea = br.readLine())!=null)
  107.                             {
  108.                                  if(!linea.trim().equals(cadena))
  109.                                  {
  110.                                       pw.println(linea);
  111.                                       pw.flush();
  112.                                  }
  113.                             }
  114.                     pw.close();
  115.                     br.close();
  116.            if (archivoC.delete())
  117.                 {
  118.                     System.out.println("No se puede eliminar el archivo");
  119.                     return;
  120.                 }
  121.              if (archivoTemp.renameTo(archivoC))
  122.                
  123.                     System.out.println("No se puede renombrar el archivo");
  124.                
  125.                
  126.         }
  127.         catch (IOException ex)
  128.         {
  129.              ex.printStackTrace();
  130.        
  131.     }    
  132. }
  133. }
  #4 (permalink)  
Antiguo 23/04/2015, 01:15
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Eliminar archivo temporal

Buenas,

Estas intentando eliminar el fichero mientras lo tienes abierto:

Código Java:
Ver original
  1. while ((cadena=b.readLine())!=null)
  2.             {
  3.               if(cadena.indexOf(isbn)!=-1)
  4.                 {
  5.                     EliminarLibro(cadena);
  6.                 }
  7.  
  8.             }
  9.             b.close();
  10.         }

Te recomiendo que utilices un flag:
Código Java:
Ver original
  1. boolean eliminarLibro = false;
  2. while ((cadena=b.readLine())!=null)
  3.             {
  4.               if(cadena.indexOf(isbn)!=-1)
  5.                 {
  6.                     eliminarLibro = true;
  7.                     break;                    
  8.                 }
  9.  
  10.             }
  11.             b.close();
  12.         }
  13.  
  14. if (eliminarLibro == true)
  15.     EliminarLibro(cadena);

Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: string, temporal
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:32.