用递归做文件夹中所有文件的提取(感谢[titilima ]的文章)

本文介绍了一个名为CSeachFile的类,该类用于递归遍历指定目录及其子目录下的所有文件,并将文件名收集到一个字符串列表中。通过使用Win32 API函数FindFirstFile和FindNextFile实现了递归文件搜索的功能。
 头文件:
  1. #pragma once
  2. #include "afxcoll.h"
  3. // CSeachFile
  4. class CSeachFile : public CWnd
  5. {
  6.     DECLARE_DYNAMIC(CSeachFile)
  7. public:
  8.     CSeachFile();
  9.     void Start(CString rootPath);
  10.     CStringList GetFilesList();
  11.     CStringList plist;
  12.     virtual ~CSeachFile();
  13. protected:
  14.     DECLARE_MESSAGE_MAP()
  15. private:
  16.     CString path_;
  17. };
文件中的Start方法就是递归函数,plist就是存储提取出来的文件名的集合类
  1. // SeachFile.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "ImportExport.h"
  5. #include "SeachFile.h"
  6. #include "afxcoll.h"
  7. // CSeachFile
  8. IMPLEMENT_DYNAMIC(CSeachFile, CWnd)
  9. CSeachFile::CSeachFile()
  10. {
  11. }
  12. void CSeachFile::Start(CString rootPath)
  13. {
  14.     //判断是否为跟目录           
  15.     int len = rootPath.GetLength();
  16.     CString path(rootPath);
  17.     if(len == 3)
  18.     {
  19.     }
  20.     else
  21.     {
  22.         CString opr("//");
  23.         path = path + opr;
  24.     }
  25.     CString fname("*.*");
  26.     path = path + fname;
  27.     WIN32_FIND_DATA wfd;
  28.     HANDLE hFind = FindFirstFile(path,&wfd);
  29.     if(hFind == INVALID_HANDLE_VALUE)
  30.         return ;
  31.     do
  32.     {
  33.         if(wfd.cFileName[0] == '.')
  34.             continue ;
  35.         if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
  36.         {
  37.            //如果是目录就递归
  38.             TCHAR szFile[MAX_PATH];
  39.             wsprintf(szFile,L"%s//%s",rootPath,wfd.cFileName);
  40.             Start(szFile);
  41.         }
  42.         else
  43.         {
  44.            //是文件就存储
  45.             plist.AddTail(wfd.cFileName);
  46.         }
  47.     }while(FindNextFile(hFind,&wfd));
  48. }
  49. CSeachFile::~CSeachFile()
  50. {
  51. }
  52. BEGIN_MESSAGE_MAP(CSeachFile, CWnd)
  53. END_MESSAGE_MAP()
  54. // CSeachFile 消息处理程序




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值