C#遍历文件夹,其实只需要一句话!
|
admin
2025年3月20日 10:17
本文热度 191
|
前言
在项目中大家肯定偶尔会有遍历文件夹的需求,还在老老实实写递归么?!那怕是骚一点的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
该文章在 2025/3/21 10:02:28 编辑过