我正在編寫一個軟件工具,作爲其主要任務的一部分,必須在目錄及其子目錄中搜索具有給定名稱的目錄,並將保存到字符串數組的每個文件路徑終止與指定的目錄名稱。例如:c#使用目錄類搜索
level_1 level_2 Level_3 RootDirectory ---> folderA ---> folderD ---> FolderF ---> Target | |---> folderE ---> Target | |---> folderB ---> Target | |---> FolderC ---> Target
應該泵出:
string[] = {RootDirectory\folderA\FolderD\folderF\Target,
RootDirectory\folderA\folderE\Target,
Rootdirectory\folderB\Target,
RootDirectory\foderC\Target}
本來我的目錄信息對象所使用getDirectories(myPath, "Target", SearchOption.AllDirectories)
,但有一個問題。出於某種原因,它會在文件夾b和c下以及folderA> folderD> folderF下找到目標,但會跳過FolderE。一旦它在子目錄folderA中找到第一個匹配項,它就會進入level_1的下一個文件夾。我應該提到我實際情況下的folderD實際上是在folderE之前按字母順序排序的,因爲它在本例中是
所以我決定使用IEnumerator
並運行where過濾器來選擇以給定目錄名稱。這找到了他們。但是,我無法弄清楚如何在IEnumerator
上做類似getDirectories().Where(x=>(x.attributes & fileattributes.hidden)==0);
的事情。
問題是,我需要它跳過隱藏的SVN目錄,因爲它顯着減慢了過程。
所以,這裏是我的問題: 我怎樣才能得到一個子目錄內以給定的目錄名結尾的所有路徑的集合,並從搜索中排除隱藏的文件?
感謝您的迴應!這工作就像一個魅力,並且變得更快!編輯:我剛剛發現,這跳過了兩個目錄....我在調試過程中找出原因。 –
跳過兩個目錄? ... 1)它們位於隱藏目錄中,或者2)它們不會以您發送的目標結束......我看不到任何其他原因,任何子目錄都會被跳過......也許您打算做一個簡單包含目標的搜索? –
哦......有第三種可能性,你嵌套了目標目錄...在這種情況下,刪除繼續(這段代碼將停止向下目錄樹一旦找到目標 –