C#遞迴讀取GIS目錄檔案格式
阿新 • • 發佈:2020-10-18
記得學習程式設計時,遞迴可以說是一種典型的程式設計思維,一種常見的需求是遍歷目錄及子目錄中的檔案。後來工作時發現,其實微軟早就幫我們寫好了,不用自己老實去寫。
var files = Directory.GetFiles(@"D:\", "*.*",SearchOption.AllDirectories); // 遍歷所有檔案 var dirs= Directory.GetDirectories(@"D:\", "*", SearchOption.AllDirectories); //遍歷所有資料夾
它包括三個引數:
引數1:檔案路徑,要搜尋的檔案目錄。
引數2:過濾格式,不填或"*.*"或"*"表示搜尋所有格式;支援萬用字元號,正則表示式,強大!
引數3:搜尋選項,SearchOption.TopDirectoryOnly 預設選項,僅包含當前目錄;SearchOption.AllDirectories 包含所有子目錄。
然後學了還是有用,在GIS中,有一些特殊的格式,如gdb是一種資料夾,gdb內的各種檔案並不是我們需要搜尋的,這就必須用遞迴思想去解決。下面結合this和ref寫了一個擴充套件該方法。
public static void GetFiles(this string directory,ref List<string> list,string searchPattern="*.*") { if (Directory.Exists(directory)) { string[] directories = Directory.GetDirectories(directory, searchPattern, SearchOption.TopDirectoryOnly); string[] files = Directory.GetFiles(directory, searchPattern, SearchOption.TopDirectoryOnly); list.AddRange(files); foreach (string item in directories) { if (item.ToLower().EndsWith(".gdb")) { list.Add(item); } else { GetFiles(item,ref list); } } } }