使用C#删除文件夹及其内部所有文件和文件夹

138

我正在尝试删除一个文件夹以及该文件夹中的所有文件和子文件夹,我使用了下面的代码,但是出现了错误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);
}
8个回答

215
dir.Delete(true); // true => recursive delete

164

30

尝试:

System.IO.Directory.Delete(path,true)

假设你有权限这样做,这将递归地删除“路径”下的所有文件和文件夹。


13

对于遇到“DirectoryNotFoundException”错误的用户,请添加以下检查:

if (Directory.Exists(path)) Directory.Delete(path, true);

5

Directory.Delete方法有一个递归的布尔参数,它应该可以满足您的需求。


5

那么,直接调用Directory.Delete(path, true);不就可以了吗?


4

试一下这个。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接