C#遍历文件夹,其实只需要一句话!

前言

在项目中大家肯定偶尔会有遍历文件夹的需求,还在老老实实写递归么?!那怕是骚一点的linq递归,其实都太麻烦了,微软爸爸早就想到我们有这样的需求,直接在框架内部已经实现好了。

实现

遍历文件夹其实只需要一个函数就搞定了,都不用去考虑递归,真的太强了。

var files = Directory.GetFiles(@"C:\", "*.*",SearchOption.AllDirectories); // 遍历所有文件
var dirs= Directory.GetDirectories(@"C:\", "*", SearchOption.AllDirectories); //遍历所有文件夹

或者

var files = Directory.EnumerateFiles(@"C:\", "*.*",SearchOption.AllDirectories); // 遍历所有文件
var dirs= Directory.EnumerateDirectories(@"C:\", "*", SearchOption.AllDirectories); //遍历所有文件夹

再或者

var files = new DirectoryInfo(@"C:\").GetFiles("*.*",SearchOption.AllDirectories); // 遍历所有文件,得到FileInfo类型的集合
var dirs= new DirectoryInfo(@"C:\").GetDirectories("*", SearchOption.AllDirectories); //遍历所有文件夹,得到DirectoryInfo类型的集合

var files = new DirectoryInfo(@"C:\").EnumerateFiles("*.*",SearchOption.AllDirectories); // 遍历所有文件,得到FileInfo类型的集合
var dirs= new DirectoryInfo(@"C:\").EnumerateDirectories("*", SearchOption.AllDirectories); //遍历所有文件夹,得到DirectoryInfo类型的集合

其中第三个参数SearchOption.AllDirectories表示搜索本文件夹和所有子目录,很碉堡吧。

" * . * "也可以是" * ",通配符都一样。通配符支持*,?,跟Windows资源管理器套路是一样的,

如果再加一句:

var list=files.Union(dirs).OrderBy(s=>s);

那不就实现了当前文件夹递归的结果包含文件和文件夹的同时遍历了么!

大家还用过那些不错的搜索组件,欢迎留言讨论!

转自:懒得勤快

链接:masuit.net/1878?t=0HN5MUNN39GHN

图片

- EOF -

技术群:添加小编微信dotnet999

公众号:dotnet讲堂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值