2009-09-02 74 views
1

我希望能夠將文件夾的路徑傳遞給應用程序,並讓程序遍歷該文件夾的全部內容(包括嵌套的文件夾和文件),刪除任何具有特定名稱的文件夾。C#Winforms - 使用特定文件名刪除硬盤上的文件夾?

我環顧四周尋找這樣做的潛在方式,但我似乎無法找到任何好的文檔。

幫助將不勝感激。

親切的問候,

+0

你的問題說你想查找特定的文件名,但你的問題也說特定的文件夾名稱。你要哪個? – 2009-09-02 14:39:12

回答

5

嘗試這樣的事情,這將刪除匹配指定名稱初始目錄中找到的任何目錄:

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");

0

轉到遞歸。

基本上,具有一個函數,它的一個文件夾名作爲參數並將它調用Directory.GetDirectories(),通過串[]它返回,自稱與每個新的字符串作爲參數迭代,則調用Directory.GetFiles()或任何函數是和刪除每個。當它返回時,刪除該文件夾。

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

始於美孚,它會檢測到酒吧和遞歸到它。 在Bar中,它不會找到任何文件夾,因此不會再從那裏遞歸。找到c.txt,它被刪除。 回到Foo,它會刪除Bar,然後找到a.txt和b.txt,刪除每個。

簡單。

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); 
       } 
      } 
     } 
    } 

你必須在文件夾中第一次刪除文件,但該方法是一樣的。

+0

@甜甜圈的答案比我的好 - 我忘了你不需要刪除文件的功能,如果你做Directory.Delete(path,true)。我也沒有讓它遞歸。 – 2009-09-02 14:43:32

相關問題