C++遍历文件夹
1 windows 遍历文件夹
// 遍历文件夹下所有文件 不递归
void TraversalFilePath(LPCSTR Path, std::vectorstd::string& vFilePathName)
{
//LPWIN32_FIND_DATAA FindData;
WIN32_FIND_DATAA FindData;
HANDLE hHandle;
char FilePathName[1024];
char FullPathName[1024];
memset(FilePathName, 0, sizeof(char) * 1024);
memset(FullPathName, 0, sizeof(char) * 1024);
strcpy_s(FilePathName, Path);
strcat_s(FilePathName, "\\*.eml");
hHandle = FindFirstFileA(FilePathName, &FindData);
if (hHandle == INVALID_HANDLE_VALUE)
{
printf("搜索失败!");
return;
}
while (true)
{
if (FindData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)
{
//递归需要放开这段注释
//strcpy_s(FilePathName, Path);
//strcat_s(FilePathName, "");
//strcat_s(FilePathName, FindData.cFileName);
//TraversalFilePath(FilePathName);
}
else
{
sprintf_s(FullPathName, "%s\\%s", Path, FindData.cFileName);
vFilePathName.push_back(FullPathName);
}
if (!FindNextFileA(hHandle, &FindData))
break;
}
FindClose(hHandle);
return;
}
2、linux文件夹遍历