如何使用 Windows API 列出目录中的文件?

新手上路,请多包涵

我有这段代码,它显示带有目录本身而不是其内容的文件夹。我想显示它的内容。我不想使用 boost::filesystem。

我该如何解决这个问题?

代码:

 #include <windows.h>
#include <iostream>

int main()
{
    WIN32_FIND_DATA data;
    HANDLE hFind = FindFirstFile("C:\\semester2", &data);      // DIRECTORY

    if ( hFind != INVALID_HANDLE_VALUE ) {
        do {
            std::cout << data.cFileName << std::endl;
        } while (FindNextFile(hFind, &data));
        FindClose(hFind);
    }
}

输出:

 semester2

原文由 John Escobia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 463
1 个回答
HANDLE hFind = FindFirstFile("C:\\semester2", &data);       // DIRECTORY

你得到了目录,因为那是你所要求的。如果您想要这些文件,请索取:

 HANDLE hFind = FindFirstFile("C:\\semester2\\*", &data);  // FILES

(如果您愿意,您可以改用 *.* ,但显然这仅适用于向后兼容性黑客,因此可能应该避免。请参阅评论和 RbMm 的答案。)

原文由 Harry Johnston 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题