15,980
社区成员
发帖
与我相关
我的任务
分享
/*
author: shiyanbo 2018-02-08
function name: ReadFileFromFolder
input param: strFoledrPath
out param: 无
meaning: 根据输入目录获取当前目录下的所有文件包含子文件夹以及其下面的所有文件,直到最底层为止
return value NULL
*/
void CDlgCheckImgResult::ReadFileFromFolder(CString &strFoledrPath)
{
WIN32_FIND_DATA FindData;
HANDLE hError;
char FilePathName[MAX_PATH];
ZeroMemory(FilePathName,sizeof(FilePathName));
strcpy(FilePathName,strFoledrPath);
strcat(FilePathName,"\\*.*");
hError = ::FindFirstFile(FilePathName,&FindData);
if (hError == INVALID_HANDLE_VALUE)
{
//cout <<"查找文件失败"<<endl;
return ;
}
while (::FindNextFile(hError,&FindData))
{
//过滤.和..
if (0 == strcmp(FindData.cFileName,"." ) || 0 == strcmp(FindData.cFileName,".." ))
{
continue;
}
//文件名称
CString strFileName;
//过滤目录
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
strFileName.Format("%s",FindData.cFileName) ;
CString strFullFileName = strFoledrPath+"\\"+strFileName;
//这样是一个目录,继续遍历读取文件
ReadFileFromFolder(strFullFileName);
continue;
}
strFileName.Format("%s",FindData.cFileName) ;
int pos = strFileName.ReverseFind('.');
//非图片和目录
if (-1 == pos )
{
continue ;
}
else
{
strFileName = strFileName.Mid(pos+1, strFileName.GetLength() - pos -1);
if (!strFileName.Compare(IMAGE_TYPE_JPG) || !strFileName.Compare(IMAGE_TYPE_PNG) || !strFileName.Compare(IMAGE_TYPE_BMP) || !strFileName.Compare(IMAGE_TYPE_TIFF))
{
CString strFullPathName;
// 构造完整路径
strFullPathName.Format("%s\\%s", strFoledrPath,FindData.cFileName) ;
vceImageSumResult.push_back(strFullPathName);
}
else
{
continue ;
}
}
}
}