win32枚举指定目录
时间: 2023-08-30 14:11:10 浏览: 44
Win32 API提供了一些函数用于枚举指定目录中的文件和子目录。以下是一个简单的示例代码,使用FindFirstFile和FindNextFile函数来遍历指定目录中的文件和子目录。
```c++
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
void ListDirectory(LPCTSTR lpDir)
{
WIN32_FIND_DATA ffd;
TCHAR szDir[MAX_PATH];
HANDLE hFind = INVALID_HANDLE_VALUE;
// 构造要查找的目录名
_tprintf(TEXT("Target directory: %s\n"), lpDir);
_tcscpy_s(szDir, lpDir);
_tcscat_s(szDir, TEXT("\\*"));
// 查找第一个文件
hFind = FindFirstFile(szDir, &ffd);
if (hFind == INVALID_HANDLE_VALUE)
{
_tprintf(TEXT("FindFirstFile failed (%d)\n"), GetLastError());
return;
}
// 遍历目录中的文件和子目录
do
{
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// 忽略"."和".."目录
if (_tcscmp(ffd.cFileName, TEXT(".")) != 0 &&
_tcscmp(ffd.cFileName, TEXT("..")) != 0)
{
_tprintf(TEXT(" %s (DIR)\n"), ffd.cFileName);
// 递归遍历子目录
ListDirectory(ffd.cFileName);
}
}
else
{
_tprintf(TEXT(" %s\n"), ffd.cFileName);
}
} while (FindNextFile(hFind, &ffd) != 0);
FindClose(hFind);
}
int _tmain(int argc, TCHAR* argv[])
{
if (argc != 2)
{
_tprintf(TEXT("Usage: %s <directory>\n"), argv[0]);
return 1;
}
ListDirectory(argv[1]);
return 0;
}
```
此代码将遍历指定目录及其子目录,并打印所有文件和子目录的名称。可以根据需要修改代码以执行其他操作。