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

Posted .NET100

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#遍历指定文件夹中所有文件的3种方法相关的知识,希望对你有一定的参考价值。

    前段时间小编同事面试遇到了这个问题,由于同事比较菜并未很完美的完成这个问题,本文就替小编来解答一下。在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))    
     
   // 处理每个文件    

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

结语:

    本文讲述了C#遍历指定文件夹中所有文件的3种方法,也替小编同事解决了疑问,以上三种遍历文件夹的方法各有优缺点,根据实际需求来选择使用哪种方法。如果只是遍历小型文件夹,可以选择GetFiles方法;如果需要遍历大型文件夹或获取更多文件属性,应该选择DirectoryInfo类;如果想要完全控制遍历程度,应该使用GetDirectories方法。希望本文对你有所收获,同时欢迎留言吐槽。

来源公众号:“dotnet开发跳槽”

以上是关于C#遍历指定文件夹中所有文件的3种方法的主要内容,如果未能解决你的问题,请参考以下文章

C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径?

vba 遍历指定文件夹(含子目录)获取文件名,哪种方法速度最快?

C#获取如何获取指定文件夹下文件的个数??、

递归遍历tar文件,提取指定扩展名的所有文件

C#,给定一个目录,遍历该目录下的所有文件、文件夹

C# 遍历文件夹及子目录下所有图片