码迷,mamicode.com
首页 > Windows程序 > 详细

[C#]递归遍历文件夹

时间:2016-01-06 09:08:26      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

// <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));
                    }
                });

  

代码效果

技术分享

[C#]递归遍历文件夹

标签:

原文地址:http://www.cnblogs.com/shouce/p/5104318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!