System.IO.DirectoryInfo di = new DirectoryInfo("YourPath");
foreach (FileInfo file in di.GetFiles()){file.Delete();}foreach (DirectoryInfo dir in di.GetDirectories()){dir.Delete(true);}
public static void Empty(this System.IO.DirectoryInfo directory){foreach(System.IO.FileInfo file in directory.GetFiles()) file.Delete();foreach(System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true);}
这将允许你做一些事情,比如…
System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(@"C:\...");
directory.Empty();
private void clearFolder(string FolderName){DirectoryInfo dir = new DirectoryInfo(FolderName);
foreach(FileInfo fi in dir.GetFiles()){fi.Delete();}
foreach (DirectoryInfo di in dir.GetDirectories()){clearFolder(di.FullName);di.Delete();}}
private void ClearFolder(string FolderName){DirectoryInfo dir = new DirectoryInfo(FolderName);
foreach(FileInfo fi in dir.GetFiles()){try{fi.Delete();}catch(Exception) { } // Ignore all exceptions}
foreach(DirectoryInfo di in dir.GetDirectories()){ClearFolder(di.FullName);try{di.Delete();}catch(Exception) { } // Ignore all exceptions}}
/// <summary>/// Extensions for <see cref="System.Collections.Generic.IEnumerable"/>./// </summary>public static class IEnumerableOfTExtensions{/// <summary>/// Performs the <see cref="System.Action"/>/// on each item in the enumerable object./// </summary>/// <typeparam name="TEnumerable">The type of the enumerable.</typeparam>/// <param name="enumerable">The enumerable.</param>/// <param name="action">The action.</param>/// <remarks>/// “I am philosophically opposed to providing such a method, for two reasons./// …The first reason is that doing so violates the functional programming principles/// that all the other sequence operators are based upon. Clearly the sole purpose of a call/// to this method is to cause side effects.”/// —Eric Lippert, “foreach” vs “ForEach” [http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx]/// </remarks>public static void ForEachInEnumerable<TEnumerable>(this IEnumerable<TEnumerable> enumerable, Action<TEnumerable> action){foreach (var item in enumerable){action(item);}}}
foreach (string file in System.IO.Directory.GetFiles(path)){System.IO.File.Delete(file);}
foreach (string subDirectory in System.IO.Directory.GetDirectories(path)){System.IO.Directory.Delete(subDirectory,true);}
using System.IO;namespace delete_the_folder{public partial class Form1 : Form{public Form1(){InitializeComponent();}
private void Deletebt_Click(object sender, EventArgs e){//the first you should write the folder placeif (Pathfolder.Text==""){MessageBox.Show("ples write the path of the folder");Pathfolder.Select();//return;}
FileAttributes attr = File.GetAttributes(@Pathfolder.Text);
if (attr.HasFlag(FileAttributes.Directory))MessageBox.Show("Its a directory");elseMessageBox.Show("Its a file");
string path = Pathfolder.Text;FileInfo myfileinf = new FileInfo(path);myfileinf.Delete();
}
}
}
public static void EmptyDirectory(string directory){// First delete all the files, making sure they are not readonlyvar stackA = new Stack<DirectoryInfo>();stackA.Push(new DirectoryInfo(directory));
var stackB = new Stack<DirectoryInfo>();while (stackA.Any()){var dir = stackA.Pop();foreach (var file in dir.GetFiles()){file.IsReadOnly = false;file.Delete();}foreach (var subDir in dir.GetDirectories()){stackA.Push(subDir);stackB.Push(subDir);}}
// Then delete the sub directories depth firstwhile (stackB.Any()){stackB.Pop().Delete();}}
public static void Empty(string directory){foreach(string fileToDelete in System.IO.Directory.GetFiles(directory)){System.IO.File.Delete(fileToDelete);}foreach(string subDirectoryToDeleteToDelete in System.IO.Directory.GetDirectories(directory)){System.IO.Directory.Delete(subDirectoryToDeleteToDelete, true);}}
public static void DeleteDirectory(string path){if (Directory.Exists(path)){//Delete all files from the Directoryforeach (string file in Directory.GetFiles(path)){File.Delete(file);}//Delete all child Directoriesforeach (string directory in Directory.GetDirectories(path)){DeleteDirectory(directory);}//Delete a DirectoryDirectory.Delete(path);}}
while (Directory.GetDirectories(dirpath).Length > 0){//Delete all files in directorywhile (Directory.GetFiles(Directory.GetDirectories(dirpath)[0]).Length > 0){File.Delete(Directory.GetFiles(dirpath)[0]);}Directory.Delete(Directory.GetDirectories(dirpath)[0]);}
private void ClearFolder(string FolderName){DirectoryInfo dir = new DirectoryInfo(FolderName);
foreach (FileInfo fi in dir.GetFiles()){fi.IsReadOnly = false;fi.Delete();}
foreach (DirectoryInfo di in dir.GetDirectories()){ClearFolder(di.FullName);di.Delete();}}
/// <summary>/// Attempt to empty the folder. Return false if it fails (locked files...)./// </summary>/// <param name="pathName"></param>/// <returns>true on success</returns>public static bool EmptyFolder(string pathName){bool errors = false;DirectoryInfo dir = new DirectoryInfo(pathName);
foreach (FileInfo fi in dir.EnumerateFiles()){try{fi.IsReadOnly = false;fi.Delete();
//Wait for the item to disapear (avoid 'dir not empty' error).while (fi.Exists){System.Threading.Thread.Sleep(10);fi.Refresh();}}catch (IOException e){Debug.WriteLine(e.Message);errors = true;}}
foreach (DirectoryInfo di in dir.EnumerateDirectories()){try{EmptyFolder(di.FullName);di.Delete();
//Wait for the item to disapear (avoid 'dir not empty' error).while (di.Exists){System.Threading.Thread.Sleep(10);di.Refresh();}}catch (IOException e){Debug.WriteLine(e.Message);errors = true;}}
return !errors;}