[C#]递归遍历文件夹_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > [C#]递归遍历文件夹

[C#]递归遍历文件夹

 2014/3/26 10:04:54  楚人游子  博客园  我要评论(0)
  • 摘要:///<summary>///递归获取文件夹目录下文件///</summary>///<paramname="pathName">需要递归遍历的文件夹</param>///<paramname="fileRule">遍历规则『委托』</param>publicstaticvoidLoopFolder(stringpathName,Action<FileInfo>
  • 标签:C# 文件 遍历 递归
class="csharpcode">        /// <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

发表评论
用户名: 匿名