// /// 遞歸獲取文件夾目錄下文件 /// /// 需要遞歸遍歷的文件夾 /// 遍歷規則『委托』 public static void LoopFolder(string pathName, Action fileRul...
// <summary> /// 遞歸獲取文件夾目錄下文件 /// </summary> /// <param name="pathName">需要遞歸遍歷的文件夾</param> /// <param name="fileRule">遍歷規則『委托』</param> public static void LoopFolder(string pathName, Action<FileInfo> fileRule) { if (string.IsNullOrEmpty(pathName)) throw new ArgumentNullException(pathName); Queue<string> _pathQueue = new Queue<string>(); _pathQueue.Enqueue(pathName); while (_pathQueue.Count > 0) { string _path = _pathQueue.Dequeue(); DirectorySecurity _pathSecurity = new DirectorySecurity(_path, AccessControlSections.Access); if (!_pathSecurity.AreAccessRulesProtected)//文件夾許可權是否可訪問 { DirectoryInfo _directoryInfo = new DirectoryInfo(_path); foreach (DirectoryInfo diChild in _directoryInfo.GetDirectories()) { _pathQueue.Enqueue(diChild.FullName); } foreach (FileInfo file in _directoryInfo.GetFiles()) { fileRule(file); } } } } 舉例使用 CSharpToolV2.LoopFolder(@"C:\Users\Administrator\Downloads\", (FileInfo file) => { if (file.Extension.Equals(".xls"))//獲取excel類型文件 { Console.WriteLine(string.Format("============{0}==============", file.FullName)); } });
代碼效果