首页 > 学院 > 开发设计 > 正文

[C#]递归遍历文件夹

2019-11-14 16:46:20
字体:
来源:转载
供稿:网友
        /// <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));                    }                });
代码效果

image


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表