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文件夹遍历