2011-07-06 51 views
3

我無意中結束了越來越borked一堆我的目錄,應該是什麼:移動複製目錄回到根目錄

/myroot/mydirectory 

結束爲:

/myroot/mydirecotry/mydirectory/mydirectory 

然後嵌套可以是任何從1到N次 - 我需要找到最遠的/ mydirectory,並將所有這些文件複製回根目錄並殺死這些被盜用的文件。我如何找到最遠的那個?

回答

2
string[] dirs; 
string actualDir = @"\myroot\"; 
string subdir = "mydirectory"; 

do 
{ 
    dirs = System.IO.Directory.GetDirectories(actualDir, subdir); 
    actualDir += subdir + @"\"; 
} 
while (dirs.Length > 0); 

string theLongestPath = actualDir; // The path to the furthest dir 

這一點會對actualDir包含subdir所有目錄,直到它的最後一個(含subdir沒有其他子目錄)。如果您對其工作原理有任何疑問,請在評論中提問。是的,我試過了,它確實有效。

+0

嗯,我忘記告訴你了,'Directory.GetDirectories(string path,string searchPatterns)'還會返回包含'subdir'的目錄名稱,但名稱比這個更長。如果你真的想要確定有一個名爲_mydirectory_的子目錄,而不僅僅是_thisismydirectory_,你必須通過'dirs'數組並逐個檢查,這可能有點複雜,呃... – TomsonTom

+0

不錯,比遞歸函數調用更乾淨我最終創建了 – Slee

+0

謝謝。你能接受答案,因爲沒有其他人對任何事情做出迴應,而且這種方式有效嗎? – TomsonTom