int find_all_files(char* lpPath, vector<string>& file)
{
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind, lpPath);
strcat(szFind, "\\*.*");
HANDLE hFind = ::FindFirstFile(szFind, &FindFileData);
if (INVALID_HANDLE_VALUE == hFind)
return -1;
do
{
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (strcmp(FindFileData.cFileName, ".") != 0 && strcmp(FindFileData.cFileName, "..") != 0)
{
//发现子目录,递归之
char szFile[MAX_PATH] = { 0 };
strcpy(szFile, lpPath);
strcat(szFile, "\\");
strcat(szFile, FindFileData.cFileName);
}
}
else
{
std::string fullPath = lpPath;
fullPath += "\\";
fullPath += FindFileData.cFileName;
file.push_back(fullPath);
}
} while (::FindNextFile(hFind, &FindFileData));
::FindClose(hFind);
return 0;
}
void find_all_Designed_files(string lpPath, string type, vector<string>& file)
{
vector<string> tempFile;
int result = find_all_files(const_cast<char*>(lpPath.c_str()), tempFile);
vector<string> tempPart;
for (int i = 0; i < tempFile.size(); i++)
{
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
const char* pc = (tempFile[i]).data();
_splitpath(pc, drive, dir, fname, ext);
if (ext == type)
{
string fname_str = fname;
string ext_str = ext;
string file_str = fname_str + ext_str;
//char fileNmae[256];
//uc4574(file_str.data(), 2, fileNmae);
file.push_back(file_str );
}
}
}
NX二次开发—获取某一文件路径下特定类型的所有文件
于 2024-05-17 08:11:49 首次发布