C# 获得目录下所有文件或指定文件类型文件(包含所有子文件夹)

 1   public partial class FileGet
 2     {
 3         /// <summary>
 4         /// 私有变量
 5         /// </summary>
 6         private static List<FileInfo> lst = new List<FileInfo>();
 7         /// <summary>
 8         /// 获得目录下所有文件或指定文件类型文件(包含所有子文件夹)
 9         /// </summary>
10         /// <param name="path">文件夹路径</param>
11         /// <param name="extName">扩展名可以多个 例如 .mp3.wma.rm</param>
12         /// <returns>List<FileInfo></returns>
13         public static List<FileInfo> getFile(string path, string extName)
14         {
15             getdir(path, extName);
16             return lst;
17         }
18         /// <summary>
19         /// 私有方法,递归获取指定类型文件,包含子文件夹
20         /// </summary>
21         /// <param name="path"></param>
22         /// <param name="extName"></param>
23         private static void getdir(string path, string extName)
24         {
25             try
26             {
27                 string[] dir = Directory.GetDirectories(path); //文件夹列表   
28                 DirectoryInfo fdir = new DirectoryInfo(path);
29                 FileInfo[] file = fdir.GetFiles();
30                 //FileInfo[] file = Directory.GetFiles(path); //文件列表   
31                 if (file.Length != 0 || dir.Length != 0) //当前目录文件或文件夹不为空                   
32                 {
33                     foreach (FileInfo f in file) //显示当前目录所有文件   
34                     {
35                         if (extName.ToLower().IndexOf(f.Extension.ToLower()) >= 0)
36                         {
37                             lst.Add(f);
38                         }
39                     }
40                     foreach (string d in dir)
41                     {
42                         getdir(d, extName);//递归   
43                     }
44                 }
45             }
46             catch (Exception ex)
47             {
48                 LogHelper.WriteLog(ex);
49                 throw ex;
50             }
51         }
52     }
53 
54 
55     public partial class FileGet1
56     {
57         /// <summary>
58         /// 获得目录下所有文件或指定文件类型文件(包含所有子文件夹)
59         /// </summary>
60         /// <param name="path">文件夹路径</param>
61         /// <param name="extName">扩展名可以多个 例如 .mp3.wma.rm</param>
62         /// <returns>List<FileInfo></returns>
63         public static List<FileInfo> getFile(string path, string extName)
64         {
65             try
66             {
67                 List<FileInfo> lst = new List<FileInfo>();
68                 string[] dir = Directory.GetDirectories(path); //文件夹列表   
69                 DirectoryInfo fdir = new DirectoryInfo(path);
70                 FileInfo[] file = fdir.GetFiles();
71                 //FileInfo[] file = Directory.GetFiles(path); //文件列表   
72                 if (file.Length != 0 || dir.Length != 0) //当前目录文件或文件夹不为空                   
73                 {
74                     foreach (FileInfo f in file) //显示当前目录所有文件   
75                     {
76                         if (extName.ToLower().IndexOf(f.Extension.ToLower()) >= 0)
77                         {
78                             lst.Add(f);
79                         }
80                     }
81                     foreach (string d in dir)
82                     {
83                         getFile(d, extName);//递归   
84                     }
85                 }
86                 return lst;
87             }
88             catch (Exception ex)
89             {
90                 LogHelper.WriteLog(ex);
91                 throw ex;
92             }
93         }
94 
95     }
原文地址:https://www.cnblogs.com/fuqiang88/p/7866458.html