2010-01-08 24 views
11

Estoy intentando eliminar un archivo, pero el siguiente código no lo hace. No arroja una excepción, pero el archivo todavía está allí. ¿Es eso posible?File.Delete No se borra el archivo

try 
{ 
    File.Delete(@"C:\File.txt"); 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e); 
} 

Si el archivo no se puede eliminar, la excepción debe imprimir, pero no es así. ¿Debería fallar esto silenciosamente (como en el método File.Delete se está tragando cualquier error)?

+1

¿Está absolutamente seguro de que la ruta del archivo es correcta? No se lanzará una excepción si el archivo no existe. –

+0

¿Qué te hace pensar que el archivo no se está eliminando? –

+0

Verificaré si este es el caso, pero la ruta se veía absolutamente correcta y el archivo sí existía. – kevindaub

Respuesta

16

File.Delete hace   no arrojar una excepción si el archivo especificado no existe. [Algunas versiones anteriores de la documentación de MSDN indicaban incorrectamente que sí].

try 
{ 
    string filename = @"C:\File.txt"; 
    if (File.Exists(filename)) 
    { 
     File.Delete(filename); 
    } 
    else 
    { 
     Debug.WriteLine("File does not exist."); 
    } 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e); 
} 
+4

@Mitch »No creo que sea correcto. Desde la segunda frase de MSDN: "_No se lanza una excepción_ si el archivo especificado no existe". http://msdn.microsoft.com/en-us/library/system.io.file.delete.aspx –

+0

Interesante, tendré que hacer un File.Exists before the delete para verificar esto. Gracias. – kevindaub

+1

tienes razón; el 3.5 doco es correcto. algunas versiones anteriores no lo fueron. –

2

¿Estás seguro de que el nombre del archivo es correcto? La única vez que no arroja un error es si el archivo no existe. Pregunta estúpida, pero ¿por casualidad tiene un error tipográfico en el nombre del archivo? O un error en el camino?

3

Compruebe que la ruta del archivo sea la correcta. No se lanzará una excepción si el archivo no existe. Un error común es confundir un archivo llamado File.txt con uno llamado File.txt.txt si se establece "Ocultar extensiones para tipos de archivos conocidos" en Windows.

Cuestiones relacionadas