更新时间:2016-01-03 23:40:45浏览次数:1+次
void GetFilePath(vector<CString>& vFilePathList,CString strDir)
{
CFileFind finder;
BOOL isNotEmpty = finder.FindFile(strDir+_T("*.*"));//总文件夹,开始遍历
while(isNotEmpty)
{
isNotEmpty = finder.FindNextFile();//查找文件
CString filename = finder.GetFilePath();//获取文件的路径,可能是文件夹,可能是文件
if (!(finder.IsDirectory()))
{
//如果是文件则加入文件列表
vFilePathList.push_back(filename);//将一个文件路径加入容器
}
else
{
//递归遍历用户文件夹,跳过非用户文件夹
if(!(finder.IsDots()||finder.IsHidden()||finder.IsSystem()||finder.IsTemporary()||finder.IsReadOnly()))
{
GetFilePath(vFilePathList,filename+_T("/"));
}
}
}
}
如果你想改函数的名称,记得将函数里递归的调用名字一起改。还可以自己加入其它的文件类型判断,去掉不想过滤的文件类型。不过基本骨架就是这样的。各种实现方式都差不多,基于这个结构可以写出各种版本的,比如C/C++语言版的直接调用API,MFC版本,QT版本,Java版本,各种版本无非就是包装了API的工作方式,没什么。搞懂了这个流程,各种版本你也会写了。 相关资讯