2010-07-27 146 views
1

比方說,一個有一些路徑: C:\ TEMP \ TestFolder1 \ TestFolder2如何刪除子目錄

而且我有一些模板: C:\ TEMP

所以我想寫功能。如果我把這個功能給定參數

0123將由模板

void DeleteSubdirectories(string tlt, string path) {} 

刪除所有子目錄

DeleteSubdirectories("C:\Temp", "C:\Temp\TestFolder1\TestFolder2"); 

必須刪除TestFolder1 \ TestFolder2從「Ç子目錄:\ TEMP

什麼是寫這個功能的最佳方式?

回答

2
System.IO.Directory.Delete("Path", true); 
+0

如果我這樣稱呼這個方法: Directory.Delete(@「C:\ Temp \ TestFolder1 \ TestFolder2」,true); 它只會被刪除** TestFolder2 ** 我不想從Temp文件夾和Temp文件夾本身中刪除所有子目錄。我只想刪除Path參數中的文件夾。在這種情況下:** TestFolder1 \ TestFolder2 ** – 2010-07-27 09:21:05

+0

@Alex,請原諒我,我不明白你的意思。無論如何,如果你想從'Temp'中刪除'TestFolder1',你必須使用'System.IO.Directory.Delete(@「C:\ Temp \ TestFolder1」,true);''刪除所需的目錄及其目錄子目錄也是如此。 – 2010-07-27 10:19:08

1

只是使用Directory.Delete - 我鏈接的重載有一個布爾值,指示是否也應刪除子目錄。

4

如果您希望delecte 「C:\ TEMP」 也使用此:

System.IO.Directory.Delete(@"C:\Temp", true); 

如果你只是想刪除目錄使用此子:

foreach (var subDir in new DirectoryInfo(@"C:\Temp").GetDirectories()) { 
    subDir.Delete(true); 
} 
0

你是什麼描述的聲音奇怪,但試試這個:

using System; 
using System.IO; 

static void DeleteSubDirectories(string rootDir, string childPath) 
{ 
    string fullPath = Path.Combine(rootDir, childPath); 

    Directory.Delete(fullPath); 

    string nextPath = Path.GetDirectoryName(fullPath); 

    while (nextPath != rootDir) 
    { 
     Directory.Delete(nextPath); 
     nextPath = Path.GetDirectoryName(nextPath); 
    } 
} 

這樣使用它:

DeleteSubdirectories("C:\Temp", "TestFolder1\TestFolder2"); 

很明顯,你必須實現異常處理。