Windows下文件系统的遍历

本文讲述了如何实现Windows下文件系统的遍历。

代码如下:

1、头文件

2、实现代码

 

 

说明:

1、数据结构PATHNODE为存储文件信息的节点,其中pFather为指向父节点的指针, pChild为指向子节点的指针, pBrotherNext为指向下一个兄弟节点的指针, pBrotherPre为指向前一兄弟节点的指针,strPath为文件或文件夹的路径, strFileName为文件的名字(无扩展名), 如果是文件夹, 该成员为空, strType为文件的扩展名, 如果文件没有扩展名, 该成员为".", 如果为文件夹, 该成员为".."。

2、所有函数均设为静态成员,以保证在不生成相应对象的情况下调用这些函数。

3、BOOL CFolderAnalyzer::CreatePathTree(LPPATHNODE pPathNode, BOOL bDeepSearch, const TCHAR szFilter[])

该函数通过迭代生成一个指定文件夹下的文件系统树,其中pPathNode为指定的根节点指针,使用时先准备好一个PATHNODE变量,设置其相应参数,用其指针带入函数,函数返回后,它就是文件系统树的根节点,可以通过它遍历整个系统;bDeepSearch制定是指在制定文件夹下搜索一层,还是深入的搜索每一个子文件夹;szFilter指定筛选的文件类型,字符串的格式为"filter1/nfilter2/nfilter3",即把要筛选的扩展名用"/n"隔开。

4、CString CFolderAnalyzer::SearchExist(CString strFileName, CString strFilter)

判断文件类型是否满足制定的筛选条件,如果满足则返回相应扩展名,不满足,返回空字符串。

值得一提的是其中用到的一个函数BOOL AFXAPI AfxExtractSubString ( CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = '/n'),它的作用是从strFilter的字符串中截取出每个扩展名,具体说明可以参考http://msdn.microsoft.com/en-us/library/aa991543(VS.80).aspx#Mtps_DropDownFilterText。单机版的MSDN好像没有这个函数(至少我的2003没有:-))。

5、CString CFolderAnalyzer::GetFilter(CString strFileName)

比较简单,作用是获得某个文件名的扩展名。

6、CString CFolderAnalyzer::GetFileName(CString strFileName)

同样比较简单,作用是去出某个文件名的扩展名。

7、void CFolderAnalyzer::ReleaseMemory(LPPATHNODE pPathNode)

释放制定节点及其子节点的内存。

 

使用实例:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值