C# 檔案遍歷
阿新 • • 發佈:2022-12-13
C# 檔案遍歷
程式碼
public static class FileUtils { // 測試一下 public static void TestGetCurrentFileList() { var fs = GetFileList(Environment.CurrentDirectory, names:".dll"); foreach (var f in fs) { Console.WriteLine(f.FullName); } } /// <summary> /// 遞迴遍歷資料夾獲取檔案 /// </summary> /// <param name="path"></param> public static List<FileInfo> GetFileList(string path, bool isRecursion = false, int pathDeep = 3, List<FileInfo> fileInfos = null, params string[] names) { if (fileInfos == null) { fileInfos = new List<FileInfo>(); } if (pathDeep < 0) { return fileInfos; } DirectoryInfo theFolder = new DirectoryInfo(path); //獲取資料夾下檔案 FileInfo[] files = theFolder.GetFiles(); foreach (var file in files) { // 匹配檔案 if (names == null || names.Length < 1) { fileInfos.Add(file); } else { foreach (var fn in names) { if (string.IsNullOrEmpty(fn)) { continue; } if (file.Name.Contains(fn) || Regex.IsMatch(file.Name, fn)) { fileInfos.Add(file); } } } } if (isRecursion) { // 如果是遞迴,遍歷該資料夾下的資料夾 var dirs = theFolder.GetDirectories(); if (!dirs.Any()) { return fileInfos; } foreach (var dir in dirs) { GetFileList(dir.FullName, isRecursion, --pathDeep, fileInfos, names); } } return fileInfos; } }