C#删除一个文件夹以及该文件夹中的所有文件和文件夹
Posted
技术标签:
【中文标题】C#删除一个文件夹以及该文件夹中的所有文件和文件夹【英文标题】:C# delete a folder and all files and folders within that folder 【发布时间】:2011-01-14 10:17:50 【问题描述】:我正在尝试删除一个文件夹以及该文件夹中的所有文件和文件夹,我正在使用下面的代码并收到错误Folder is not empty
,有什么建议可以做吗?
try
var dir = new DirectoryInfo(@FolderPath);
dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
dir.Delete();
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[i].Index);
catch (IOException ex)
MessageBox.Show(ex.Message);
【问题讨论】:
【参考方案1】:对于那些遇到 DirectoryNotFoundException 的人,请添加此检查:
if (Directory.Exists(path)) Directory.Delete(path, true);
【讨论】:
【参考方案2】:试试这个:
foreach (string files in Directory.GetFiles(SourcePath))
FileInfo fileInfo = new FileInfo(files);
fileInfo.Delete(); //delete the files first.
Directory.Delete(SourcePath);// delete the directory as it is empty now.
【讨论】:
虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高答案的长期价值。Read this【参考方案3】:试试这个。
namespace EraseJunkFiles
class Program
static void Main(string[] args)
DirectoryInfo yourRootDir = new DirectoryInfo(@"C:\somedirectory\");
foreach (DirectoryInfo dir in yourRootDir.GetDirectories())
DeleteDirectory(dir.FullName, true);
public static void DeleteDirectory(string directoryName, bool checkDirectiryExist)
if (Directory.Exists(directoryName))
Directory.Delete(directoryName, true);
else if (checkDirectiryExist)
throw new SystemException("Directory you want to delete is not exist");
【讨论】:
【参考方案4】:阅读手册:
Directory.Delete Method (String, Boolean)
Directory.Delete(folderPath, true);
【讨论】:
为什么要阅读手册,因为它可以更快地在谷歌上搜索并结束? 这是真的 确实...刚刚用谷歌搜索了这个,这篇文章是谷歌的第一个结果。 我有时会提出问题,然后自己回答,以帮助未来的谷歌人。 *** 允许您同时发布问题和答案。 我已经开始以这种方式完成所有本地文档。不是一个常见问题解答,更像是 SO 问题。即我该怎么做?或者这是什么?【参考方案5】:public void Empty(System.IO.DirectoryInfo directory)
try
logger.DebugFormat("Empty directory 0", directory.FullName);
foreach (System.IO.FileInfo file in directory.GetFiles()) file.Delete();
foreach (System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true);
catch (Exception ex)
ex.Data.Add("directory", Convert.ToString(directory.FullName, CultureInfo.InvariantCulture));
throw new Exception(string.Format(CultureInfo.InvariantCulture,"Method:0", ex.TargetSite), ex);
【讨论】:
【参考方案6】:你应该使用:
dir.Delete(true);
也用于递归删除该文件夹的内容。请参阅 MSDN DirectoryInfo.Delete() overloads。
【讨论】:
【参考方案7】:试试:
System.IO.Directory.Delete(path,true)
这将递归删除“路径”下的所有文件和文件夹,前提是您有权这样做。
【讨论】:
【参考方案8】:呃,打个电话Directory.Delete(path, true);
怎么样?
【讨论】:
【参考方案9】:Directory.Delete 方法有一个递归布尔参数,它应该可以满足您的需要
【讨论】:
【参考方案10】:dir.Delete(true); // true => recursive delete
【讨论】:
以上是关于C#删除一个文件夹以及该文件夹中的所有文件和文件夹的主要内容,如果未能解决你的问题,请参考以下文章
C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径?