/// <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)); } });代碼效果
新聞熱點
疑難解答