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

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

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	est";

            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;
    }
原文地址:https://www.cnblogs.com/jiangxianshen/p/7793906.html