C#Winforms - 删除具有特定文件名的硬盘驱动器上的文件夹?

时间:2009-09-02 14:25:56

标签: c# .net

我希望能够将文件夹的路径传递给应用程序,让程序运行该文件夹的整个内容,包括嵌套的文件夹和文件,删除它遇到的具有特定名称的任何文件夹

我已经四处寻找可能的方法,但我似乎无法找到任何好的文档。

非常感谢帮助。

亲切的问候,

3 个答案:

答案 0 :(得分:6)

尝试这样的操作,删除在初始目录中找到的与您指定的名称匹配的任何目录:

  public void RecursiveDelete(string path, string name)
  {
     foreach (string directory in Directory.GetDirectories(path))
     {
        if (directory.EndsWith("\\" + name))
        {
           Directory.Delete(directory, true);
        }
        else
        {
           RecursiveDelete(directory, name);
        }
     }
  }

然后拨打RecursiveDelete("initial path", "name of directory to delete");

答案 1 :(得分:0)

去递归。

基本上,有一个函数将文件夹名称作为其参数并让它调用Directory.GetDirectories(),遍历它返回的字符串[],使用每个新字符串作为参数调用自身,然后调用Directory.GetFiles()或其他任何函数并删除每个函数。返回时,删除该文件夹。

所以想象你有 富 富\ A.TXT 富\ b.txt 富\酒吧 FOO \酒吧\ c.txt

从Foo开始,它会检测到Bar并递归到它。 在Bar中,它找不到文件夹,所以不再从那里递归。找到c.txt,它被删除。 回到Foo,它会删除Bar,然后找到a.txt和b.txt,删除每个。

易。

答案 2 :(得分:0)

您检查过MSDN吗? Directory class将是您的朋友:

public void DeleteFiles(string path, string toDelete)
    {
        if(Directory.Exists(path))
        {
            foreach(string folder in Directory.GetDirectories(path))
            {
                if(toDelete == Path.GetDirectoryName(folder))
                {
                    DeleteFilesInFolder(folder);
                    Directory.Delete(folder);
                }
            }
        }
    }

您必须先删除文件夹中的文件,但方法大致相同。