递归遍历文件夹获取所有文件

新建控制台应用程序,源代码如下:

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;//文件操作需要引入的命名空间

namespace GetFiles
{
    class Program
    {
        //定义全局静态集合存放文件路径
        public static List<string> pathList = new List<string>();
        static void Main(string[] args)
        {
            string path = @"D:\cnblogs\test";

            DirectoryInfo dir = new DirectoryInfo(path);
            GetFileList(dir);
            for (int i = 0; i < pathList.Count; i++)
            {
                Console.WriteLine(pathList[i]);
            }
            Console.ReadLine();
        }

        /// <summary>
        /// 遍历指定文件夹及其子文件下的所有文件
        /// </summary>
        /// <param name="_dir"></param>
        public static void  GetFileList(DirectoryInfo _dir)
        {
          
            //获取指定文件夹下的所有文件
            FileInfo[] fis = _dir.GetFiles();
            for (int i = 0; i < fis.Length; i++)
            {
                pathList.Add(fis[i].FullName);
            }
            //获取指定文件夹下的所有文件夹并递归调用获取文件的方法
            DirectoryInfo[] dis = _dir.GetDirectories();
            for (int j = 0; j < dis.Length; j++)
            {
                GetFileList(dis[j]);
            }
           
        }
    }
}
复制代码

测试文件分布情况如下:

 

 

运行程序:

成功读取到了指定文件夹下的所有文件!!!

后来优化了获取文件路径方法:

复制代码
    /// <summary>
    /// 遍历指定文件夹及其子文件下的所有文件
    /// </summary>
    /// <param name="_path">文件根目录</param>
    /// <param name="_pathList">文件路径集合</param>
    /// <returns>文件路径集合</returns>
    public static List<string> GetFileList(string _path, List<string> _fileList)
    {
        DirectoryInfo dir = new DirectoryInfo(_path);
        FileInfo[] fil = dir.GetFiles(); ;
        DirectoryInfo[] dii = dir.GetDirectories();
        foreach (FileInfo f in fil)
        {
           _fileList.Add(f.FullName);
        }
        //获取子文件夹内的文件列表,递归遍历  
        foreach (DirectoryInfo d in dii)
        {  
          GetFileList(d.FullName, _fileList);
        }
        return _fileList;
    }
复制代码

 

posted @   #疆先绅#  阅读(4966)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示