您的位置:首页 > 其它

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

2008-10-30 10:57 387 查看
头文件:
#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_;
};

文件中的Start方法就是递归函数,plist就是存储提取出来的文件名的集合类
// 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 消息处理程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: