c++代码中如何返回的HANDLE如何遍历该路径下所有文件夹以及文件展示所有代码
时间: 2024-05-02 11:21:58 浏览: 93
以下是一个示例代码,可以遍历指定路径下的所有文件夹和文件,并将它们的名称输出到控制台:
```
#include <Windows.h>
#include <iostream>
#include <string>
void TraverseDirectory(std::wstring path)
{
WIN32_FIND_DATA findData;
HANDLE hFind;
std::wstring searchPath = path + L"\\*.*";
hFind = FindFirstFile(searchPath.c_str(), &findData);
if (hFind == INVALID_HANDLE_VALUE)
{
std::wcout << L"Could not open directory: " << path << std::endl;
return;
}
do
{
if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (wcscmp(findData.cFileName, L".") != 0 && wcscmp(findData.cFileName, L"..") != 0)
{
std::wcout << L"Directory: " << findData.cFileName << std::endl;
std::wstring newPath = path + L"\\" + findData.cFileName;
TraverseDirectory(newPath);
}
}
else
{
std::wcout << L"File: " << findData.cFileName << std::endl;
}
} while (FindNextFile(hFind, &findData));
FindClose(hFind);
}
int main()
{
std::wstring path = L"C:\\temp";
TraverseDirectory(path);
return 0;
}
```
这段代码首先定义了一个函数`TraverseDirectory`,该函数接受一个`std::wstring`类型的路径作为参数,并使用`FindFirstFile`和`FindNextFile`函数遍历该路径下的所有文件和文件夹。
对于每个找到的文件夹,函数会检查其名称是否为`.`或`..`,如果不是,则将其名称输出到控制台,并递归地调用自身以遍历该文件夹下的所有文件和文件夹。
对于每个找到的文件,函数会将其名称输出到控制台。
在`main`函数中,我们定义了一个路径`C:\temp`作为示例,并调用`TraverseDirectory`函数以遍历该路径。
阅读全文