遞歸遍歷文件夾獲取所有文件


新建控制台應用程序,源代碼如下:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM