今天这篇博文,完全是有感而发,不仅仅是经常看到有人求文件夹遍历的代码,主要是,看到有些人写了一些多线程读取的方法,贴到网上供人参考使用,然后真有不少人特意求这种多线程遍历文件目录的方法。看到这个现象,我很无奈。。。真的。
为什么这么说,因为了解传统硬盘工作原理的人,稍微想想,就应该明白,读取某个文件夹下的所有目录信息,单线程比多线程更有优势。
也就是说,多线程遍历文件夹目录信息,根本就是个噱头,毫无实用价值,只会误导初学者。
顺便也查阅了一些关于固态硬盘的资料,基本可以肯定,即使是在固态硬盘上遍历目录信息,多线程也是没有什么意义的。
希望更多人能看到这篇文章,同时也希望更多程序员们,有空也看看硬件原理方面的书,从而写出更多真正优秀高效的代码。
如果我的观点有不对的地方,也请大家提出并讨论指正!
/// <summary> /// 遍历文件夹及所含文件的递归方法 /// </summary> /// <param name="list">遍历结果集</param> /// <param name="path">遍历的目录</param> public static void GetAllFiles(List<PathInfo> list, string path) { //获取目录下的所有的文件的全名 string[] files = Directory.GetFiles(path); foreach (var f in files) {//遍历该目录下所有文件 FileInfo fi = new FileInfo(f); // ... Do something,You know! ... } //获取目录下的所有的子文件夹全名 string[] dir = Directory.GetDirectories(path); foreach (var d in dir) {//遍历该目录下所有文件夹 // ... Do something,You know! ... GetAllFiles(list, d); } }