头文件:
文件中的Start方法就是递归函数,plist就是存储提取出来的文件名的集合类
- #pragma once
- #include "afxcoll.h"
- // CSeachFile
- class CSeachFile : public CWnd
- {
- DECLARE_DYNAMIC(CSeachFile)
- public:
- CSeachFile();
- void Start(CString rootPath);
- CStringList GetFilesList();
- CStringList plist;
- virtual ~CSeachFile();
- protected:
- DECLARE_MESSAGE_MAP()
- private:
- CString path_;
- };
- // SeachFile.cpp : 实现文件
- //
- #include "stdafx.h"
- #include "ImportExport.h"
- #include "SeachFile.h"
- #include "afxcoll.h"
- // CSeachFile
- IMPLEMENT_DYNAMIC(CSeachFile, CWnd)
- CSeachFile::CSeachFile()
- {
- }
- void CSeachFile::Start(CString rootPath)
- {
- //判断是否为跟目录
- int len = rootPath.GetLength();
- CString path(rootPath);
- if(len == 3)
- {
- }
- else
- {
- CString opr("//");
- path = path + opr;
- }
- CString fname("*.*");
- path = path + fname;
- WIN32_FIND_DATA wfd;
- HANDLE hFind = FindFirstFile(path,&wfd);
- if(hFind == INVALID_HANDLE_VALUE)
- return ;
- do
- {
- if(wfd.cFileName[0] == '.')
- continue ;
- if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- {
- //如果是目录就递归
- TCHAR szFile[MAX_PATH];
- wsprintf(szFile,L"%s//%s",rootPath,wfd.cFileName);
- Start(szFile);
- }
- else
- {
- //是文件就存储
- plist.AddTail(wfd.cFileName);
- }
- }while(FindNextFile(hFind,&wfd));
- }
- CSeachFile::~CSeachFile()
- {
- }
- BEGIN_MESSAGE_MAP(CSeachFile, CWnd)
- END_MESSAGE_MAP()
- // CSeachFile 消息处理程序