c#使用api函数来遍历文件和目录

c#使用api函数来遍历文件和目录

ID:14682376

大小:73.00 KB

页数:15页

时间:2018-07-29

c#使用api函数来遍历文件和目录_第1页
c#使用api函数来遍历文件和目录_第2页
c#使用api函数来遍历文件和目录_第3页
c#使用api函数来遍历文件和目录_第4页
c#使用api函数来遍历文件和目录_第5页
资源描述:

《c#使用api函数来遍历文件和目录》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、★C#使用API函数来遍历文件和目录我们有时需要遍历某个目录下的文件和子目录,可以使用System.IO.DirectoryInfo.GetDirectories或GetFiles来获得目录下的所有的文件和子目录,当这个目录下的内容比较多时,这个操作就比较耗时间,有时我们仅仅需要知道某个目录下是否有子目录,这样的操作显然是浪费时间的。此时我们很容易想到三个Win32API函数FindFirstFile,FindNextFile和FindClose。这三个API搭配使用就能遍历文件和子目录了,而且可以遍历的

2、时候随时中止,避免无谓的操作。C#中可以使用foreach来遍历某个序列,遍历使用的对象必须实现System.Collections.IEnumeable接口,而内部调用的遍历器则必须实现System.Collections.IEnumerator,为了使用方便,我们在使用FindFirstFile等API函数时封装为IEnumerator,而且实际上是有条件封装的。这里很多人就会提到C#调用API的执行效率问题,认为应当用C,C++调用API才是正道,使用C#调用则有些鸡肋。但在我个人编程经历中,也有不

3、少调用API的,经验发现其实效率问题不大,可以省略。我只是做常规的运行在PC机上面的软件,CPU通常超过1GHZ,而且无需考虑高实时性和高效率。若过于考虑效率问题会加大软件开发消耗。从工程开发管理方面看是不合理的。我应当解决比较突出的效率问题,不突出的影响不大的效率问题有时间才去解决。使用C#封装Win32API必然会降低执行效率,但是封装后使用方便快捷,综合考虑认为这是正确的。这里说一下“技术镀金”这个问题,所谓技术镀金就是开发人员在项目软件开发中过于追求技术的完美性,试图在技术上镀上一层完美的金壳,导

4、致软件开发工作量加大,项目时间拉长,有可能导致项目的失败。我吃过“技术镀金”的苦头,现在我内心是追求完美的,但实际开发时经常有意压制追求完美的心思。现在继续探讨封装大计,本次封装重点在于实现IEnumerator,而IEnumeable只是IEnumerator的一个包装。IEnumerator实现方法Reset,MoveNext和属性Current,Reset方法用于重新设置遍历器,MoveNext用于查找下一个文件或目录,而Current返回当前文件或目录。这个遍历器还得注意FindClose的调用,

5、必须在遍历完毕没有找到文件或子目录后调用,若不调用该API函数则会造成内存泄漏。根据上设计,我写出如下代码,这段代码功能单一,希望有人能用得上///

///文件或目录遍历器,本类型为FileDirectoryEnumerator的一个包装////////////编写(http://www.soAsp.net)//////以下代码演示使用这个文件目录遍历器//////FileDirectoryEnumerablee=newFileDirectoryEnu

6、merable();///e.SearchPath=@"c:";///e.ReturnStringType=true;///e.SearchPattern="*.exe";///e.SearchDirectory=false;///e.SearchFile=true;///foreach(objectnameine)///{///System.Console.WriteLine(name);///}///System.Console.ReadLine();//////publiccl

7、assFileDirectoryEnumerable:System.Collections.IEnumerable{privateboolbolReturnStringType=true;///

///是否以字符串方式返回查询结果,若返回true则当前对象返回为字符串,///否则返回System.IO.FileInfo或System.IO.DirectoryInfo类型///publicboolReturnStringType{get{returnbolReturnSt

8、ringType;}set{bolReturnStringType=value;}}privatestringstrSearchPattern="*";///

///文件或目录名的通配符///publicstringSearchPattern{get{returnstrSearchPattern;}set{strSearchPattern=value;}}privatestringstrSe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。