前言
在項(xiàng)目中大家肯定偶爾會(huì)有遍歷文件夾的需求,還在老老實(shí)實(shí)寫遞歸么?!那怕是騷一點(diǎn)的linq遞歸,其實(shí)都太麻煩了,微軟爸爸早就想到我們有這樣的需求,直接在框架內(nèi)部已經(jīng)實(shí)現(xiàn)好了。
實(shí)現(xiàn)
遍歷文件夾其實(shí)只需要一個(gè)函數(shù)就搞定了,都不用去考慮遞歸,真的太強(qiáng)了。
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類型的集合
其中第三個(gè)參數(shù)SearchOption.AllDirectories表示搜索本文件夾和所有子目錄,很碉堡吧。
" * . * "也可以是" * ",通配符都一樣。通配符支持*,?,跟Windows資源管理器套路是一樣的,
如果再加一句:
var list=files.Union(dirs).OrderBy(s=>s);
那不就實(shí)現(xiàn)了當(dāng)前文件夾遞歸的結(jié)果包含文件和文件夾的同時(shí)遍歷了么!
大家還用過(guò)那些不錯(cuò)的搜索組件,歡迎留言討論!
轉(zhuǎn)自:懶得勤快
鏈接:masuit.net/1878?t=0HN5MUNN39GHN
該文章在 2025/3/21 10:02:28 編輯過(guò)