使用内置的Windows方法获取文件夹的内容
Using built in Windows Methods to get Contents of Folder
我的目标是只使用内置的C++/Windows方法(我认为我的C++版本不支持std::filesystem(来获取文件夹中的文件名。
现在我有这个:
HANDLE hFind;
WIN32_FIND_DATA data;
hFind = FindFirstFile("C:\Folder\*", &data);
if (hFind != INVALID_HANDLE_VALUE) {
do {
//Process File Name
std::wstring ws(data.cFileName);
} while (FindNextFile(hFind, &data));
FindClose(hFind);
}
这似乎返回空白名称,而不是文件夹中文件的名称。
我是否正确使用了这个查找第一个文件函数?有没有更好的方法可以做到这一点?
您的代码无法按所示进行编译。您正在调用FindFirstFile()
的 ANSI 版本(由于您向它传递了一个窄 ANSI 字符串文本,而不是宽 Unicode 字符串文本(,并且std::wstring
没有接受char[]
作为输入的构造函数。
除了这个错误之外,您还忽略了区分文件和子文件夹的data.dwFileAttributes
字段,并且在子文件夹的情况下,您没有检查data.cFileName
的内容以忽略"."
并".."
特殊的文件夹名称。
试试这个:
WIN32_FIND_DATAW data;
HANDLE hFind = FindFirstFileW(L"C:\Folder\*", &data);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
if ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
{
// Process File Name
std::wstring ws(data.cFileName);
...
}
else
{
if ((lstrcmpW(data.cFileName, L".") != 0) &&
(lstrcmpW(data.cFileName, L"..") != 0))
{
// Process Folder Name
std::wstring ws(data.cFileName);
...
}
}
}
while (FindNextFileW(hFind, &data));
FindClose(hFind);
}
相关文章:
- [android ndk]如何获取资产文件夹中文件的绝对路径?
- 使用内置的Windows方法获取文件夹的内容
- 获取 exe 文件夹路径的最佳方法?
- 如何在C#或C++中获取文件或文件夹的有效权限?有什么 API 吗?
- Qt TreeView获取总行数,考虑展开和折叠的文件夹
- 从 FutureAccessList 同步获取文件夹路径
- 如何使用 Win API 获取文件夹中的文件列表(带过滤器)
- 从Windows上的系统工作的服务中获取用户文档文件夹.C++
- 通过文件资源管理器获取文件夹目录
- 使用 std::regex_search 获取与模式匹配的所有文件和文件夹
- 如何在QT中获取Windows默认文件夹的本地名称
- C 获取目录路径,解析文件夹名称和来自Parent Directory的打印文件内容
- 如何在低文件夹中获取IE cookie
- 如何从文件夹中获取文件名,并将它们添加到QT中的孩子中
- 读取文件夹中的文件列表时获取分段折叠
- 如何获取哪些快捷方式和文件在桌面等文件夹路径中突出显示
- 通过浏览按钮仅获取文件夹路径
- 如何在Windows中为当前用户获取库文件夹列表
- ShellExecute获取打开文件夹的访问权限
- 如何使用C或C++函数获取特定文件夹中的文件数