16,472
社区成员
发帖
与我相关
我的任务
分享
void GenFileList(PCSTR pszDir, PCSTR pszPrefix, std::vector<std::string> &vecFileList, std::vector<std::string> &vecLongFN)
{
char szFileName[MAX_PATH*2];
char szFindDir[MAX_PATH*2];
strcpy_s(szFindDir, pszDir);
strcat_s(szFindDir, "*");
WIN32_FIND_DATAA wfd;
HANDLE hFind = hFind = FindFirstFileA(szFindDir, &wfd);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (wfd.cFileName[0] == '.')
{
if (wfd.cFileName[1] == '\0' || (wfd.cFileName[1] == '.' && wfd.cFileName[2] == '\0'))
{
continue;
}
}
else
{
sprintf_s(szFileName, "%s%s\\", pszPrefix, wfd.cFileName);
char szChildDir[MAX_PATH*2];
sprintf_s(szChildDir, "%s%s\\", pszDir, wfd.cFileName);
GenFileList(szChildDir, szFileName, vecFileList, vecLongFN);
}
}
else
{
char* dot = strrchr(wfd.cFileName, '.');
if (dot && std::binary_search(pMainDlg->m_vecAcceptExts.begin(), pMainDlg->m_vecAcceptExts.end(), dot+1, compare_without_case()))
{
sprintf_s(szFileName, "%s%s", pszPrefix, wfd.cFileName);
if (strlen(szFileName) > MAX_FI_PATH-1)
{
vecLongFN.push_back(szFileName);
}
else
{
vecFileList.push_back(szFileName);
}
}
}
} while (FindNextFileA(hFind, &wfd));
FindClose(hFind);
}
}