我希望能夠將文件夾的路徑傳遞給應用程序,並讓程序遍歷該文件夾的全部內容(包括嵌套的文件夾和文件),刪除任何具有特定名稱的文件夾。C#Winforms - 使用特定文件名刪除硬盤上的文件夾?
我環顧四周尋找這樣做的潛在方式,但我似乎無法找到任何好的文檔。
幫助將不勝感激。
親切的問候,
我希望能夠將文件夾的路徑傳遞給應用程序,並讓程序遍歷該文件夾的全部內容(包括嵌套的文件夾和文件),刪除任何具有特定名稱的文件夾。C#Winforms - 使用特定文件名刪除硬盤上的文件夾?
我環顧四周尋找這樣做的潛在方式,但我似乎無法找到任何好的文檔。
幫助將不勝感激。
親切的問候,
嘗試這樣的事情,這將刪除匹配指定名稱初始目錄中找到的任何目錄:
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");
轉到遞歸。
基本上,具有一個函數,它的一個文件夾名作爲參數並將它調用Directory.GetDirectories(),通過串[]它返回,自稱與每個新的字符串作爲參數迭代,則調用Directory.GetFiles()或任何函數是和刪除每個。當它返回時,刪除該文件夾。
所以,想象一下你有 富 富\ A.TXT 富\ b.txt 富\酒吧 富\酒吧\ c.txt
始於美孚,它會檢測到酒吧和遞歸到它。 在Bar中,它不會找到任何文件夾,因此不會再從那裏遞歸。找到c.txt,它被刪除。 回到Foo,它會刪除Bar,然後找到a.txt和b.txt,刪除每個。
簡單。
您是否檢查過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);
}
}
}
}
你必須在文件夾中第一次刪除文件,但該方法是一樣的。
@甜甜圈的答案比我的好 - 我忘了你不需要刪除文件的功能,如果你做Directory.Delete(path,true)。我也沒有讓它遞歸。 – 2009-09-02 14:43:32
你的問題說你想查找特定的文件名,但你的問題也說特定的文件夾名稱。你要哪個? – 2009-09-02 14:39:12