2011-02-23 16 views
11

Quiero eliminar una carpeta que contiene archivos y una subcarpeta, que también contiene archivos. He usado todo, pero no funciona para mí. Estoy usando la siguiente función en mi aplicación web asp.net:eliminar carpeta/archivos y subcarpeta

var dir = new DirectoryInfo(folder_path); 
dir.Delete(true); 

A veces se borra una carpeta, o, a veces no lo hace. Si una subcarpeta contiene un archivo, solo elimina el archivo, y no la carpeta también.

+1

Si tou utilizar hasta siete/Vista veces usted no puede eliminar la carpeta si el Explorador está abierto en esa carpeta (o más profundo) – Stecya

+0

@ Stecya: estoy usando esto como una aplicación web. – safi

+0

¿Se produce/registra un mensaje de error o la eliminación simplemente falla silenciosamente? – FrustratedWithFormsDesigner

Respuesta

5

Esto se ve sobre la derecha: http://www.ceveni.com/2008/03/delete-files-in-folder-and-subfolders.html

//to call the below method 
EmptyFolder(new DirectoryInfo(@"C:\your Path")) 


using System.IO; // dont forget to use this header 

//Method to delete all files in the folder and subfolders 

private void EmptyFolder(DirectoryInfo directoryInfo) 
{ 
    foreach (FileInfo file in directoryInfo.GetFiles()) 
    {  
     file.Delete(); 
    } 

    foreach (DirectoryInfo subfolder in directoryInfo.GetDirectories()) 
    { 
     EmptyFolder(subfolder); 
    } 
} 
+1

¿por qué no Directory.Delete (folder_path, recursive: true); ? –

0

También puede hacer lo mismo utilizando el método DirectoryInfo ejemplo. Acabo de enfrentar este problema y creo que esto también puede resolver su problema.

var fullfilepath = Server.MapPath(System.Web.Configuration.WebConfigurationManager.AppSettings["folderPath"]); 

System.IO.DirectoryInfo deleteTheseFiles = new System.IO.DirectoryInfo(fullfilepath); 

deleteTheseFiles.Delete(true); 

For more details have a look at this link as it looks like the same.

1

La forma más fácil en mi experiencia es esta

Directory.Delete(folderPath, true); 

Pero estoy experimentando un problema con esta función en un escenario cuando estoy tratando de crear la misma carpeta justo después de su eliminación

Directory.Delete(outDrawableFolder, true); 
//Safety check, if folder did not exist create one 
if (!Directory.Exists(outDrawableFolder)) 
{ 
    Directory.CreateDirectory(outDrawableFolder); 
} 

Ahora, cuando mi código intenta crear algún archivo en el outDrwableFolder, termina en una excepción. como por ejemplo crear un archivo de imagen usando api Image.Save (filename, format).

De alguna manera esta función de ayudante funciona para mí.

public static bool EraseDirectory(string folderPath, bool recursive) 
{ 
    //Safety check for directory existence. 
    if (!Directory.Exists(folderPath)) 
     return false; 

    foreach(string file in Directory.GetFiles(folderPath)) 
    { 
     File.Delete(file); 
    } 

    //Iterate to sub directory only if required. 
    if (recursive) 
    { 
     foreach (string dir in Directory.GetDirectories(folderPath)) 
     { 
      EraseDirectory(dir, recursive); 
     } 
    } 
    //Delete the parent directory before leaving 
    Directory.Delete(folderPath); 
    return true; 
} 
Cuestiones relacionadas