隐藏

C#遍历指定文件夹中所有文件的3种方法

发布:2023/12/28 20:13:11作者:管理员 来源:本站 浏览次数:447

前段时间小编同事面试遇到了这个问题,由于同事比较菜并未很完美的完成这个问题,本文就替小编来解答一下。在C#中有多种方式类遍历指定文件夹中的文件,本文将介绍三种方式。


一、使用Directory类的GetFiles方法:


示例代码如下:


   string[] files = Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories);

   foreach (string file in files){    // 处理每个文件}


此方法简单易用,一行代码就可以完成遍历,适用于小型文件夹。但缺点是对于大型文件夹,GetFiles方法会遍历整个文件夹并返回一个包含所有文件的数组,可能导致性能问题。


二、使用DirectoryInfo类:


示例代码如下:


   DirectoryInfo folder = new DirectoryInfo(folderPath);

   foreach (FileInfo file in folder.GetFiles("*.*", SearchOption.AllDirectories))

   {  

    // 处理每个文件

   }

   //欢迎关注公众号“DOTNET开发跳槽”,关注可获得海量面试题


使用FileInfo对象来代表每个文件,可以获取更多文件属性,适用于大型文件夹。缺点是相比GetFiles方法略显冗长,不够简洁。


三、使用File类和Directory类的GetDirectories方法:


使用示例:


   foreach (string directory in Directory.GetDirectories(folderPath, "*", SearchOption.AllDirectories))

   {  

     foreach (string file in Directory.GetFiles(directory))    

   {    

      // 处理每个文件    }

   }


这种方案是可以在遍历子文件夹时遍历指定深度,适用于想要完全控制遍历程度的情形。缺点是相比其他两种方法较为复杂,需要嵌套循环遍历。