首页 > 编程语言 >C#遍历指定文件夹中所有文件的3种方法

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

时间:2023-03-27 12:56:21浏览次数:38  
标签:GetFiles 遍历 文件 C# 文件夹 Directory 方法

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

标签:GetFiles,遍历,文件,C#,文件夹,Directory,方法
From: https://www.cnblogs.com/xbhp/p/17261166.html

相关文章

  • wsl docker 更换位置
    wsl--shutdownwsl-l-vwsl--exportdocker-desktopG:\WSL\bak\docker-desktop.tarwsl--exportdocker-desktop-dataG:\WSL\bak\docker-desktop-data.tarw......
  • gcode All In One
    gcodeAllInOneG-code(alsoRS-274)isthemostwidely-usedcomputernumericalcontrol(CNC)programminglanguage.Itisusedmainlyincomputer-aidedmanufa......
  • ERROR 1820 (HY000): You must reset your password using ALTER USER statement befo
    安装mysql8后,本地登录成功,选择数据库报错ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstatementbeforeexecutingthisstatement. 解决办......
  • CF:D. Shocking Arrangement
    掉大分补提D点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PLL;#defineIOScin.tie(nullptr)->sync_wit......
  • python+playwright 学习-38.checkbox和radio 相关操作
    前言单选框和复选框相关操作总结locator.click()点击操作locator.check()选中locator.uncheck()不选中locator.set_checked()设置选中状态locator.is_check......
  • C++学习路线
    C++是一种高级编程语言,广泛用于开发操作系统、应用程序、游戏和各种工具。如果你想学习这门语言,以下是一个适合初学者的学习路线:第一步:学习C++基础知识在学习C++之前,你需......
  • c# DateTime 当前时间
    获取日期+时间DateTime.Now.ToString(); // 2022/6/16星期四17:12:55DateTime.Now.ToLocalTime().ToString(); // 2022/6/16星期四17:13:......
  • chatGPT教你学sql的事务
    事务的隔离级别事务的隔离级别是指多个并发事务之间相互隔离的程度,主要是为了解决并发事务带来的一致性问题,它的主要作用是控制数据库中事务的可见性和可重......
  • CentOS/Ubuntu 安装 Docker和Portainer
    在两个环境下安装了Docker及Portainer,记录下以供日后查阅CentOS7部分1.清理旧版本$sudoyumremovedocker\docker-client\docker-c......
  • el-cascader编辑回显问题
    定义props中的键值对应关系定义好之后了解后台传递过来的值是什么类型  当点编辑之后进行数据回显蓝色为number类型最后通过this.$refs['ref名称'].checkedValue进......