首页 > 解决方案 > 通过搜索硬盘找到文件目录

问题描述

所以我试图通过一个特定的硬盘驱动器(例如,C:) 来搜索一个文件(比如“HxD.exe”),并且我试图获取该文件的特定目录以使用CreateProcess(). 我知道这个问题之前已经回答过,但是我已经尝试了所有这些方法,但没有一个对我有用(嗯,一个有效,但它给我的字符串类型无法转换为CreateProcess()正在寻找的内容而不会丢失数据)。也许我只是做错了?无论如何,如果有人知道任何可行的方法,请告诉我那将是很棒的。我只需要它为 Windows 工作。代码FindFirstFile()

LPWIN32_FIND_DATA fd = 0;
    HANDLE findFile = 0;

    do
    {
        findFile = FindFirstFile((LPCWSTR)"HxD.exe", fd);

        if (fd == 0)
        {
            std::cout << "ERROR " << GetLastError();
            // prints "ERROR 2"
        }

    } while (FindNextFile(findFile, fd));

    CloseHandle(findFile);

PS:抱歉,如果这是一个非常容易解决的问题,我在午夜迅速整理了一些代码,因为我将其全部删除,而且我没有时间查找它 b/c 我快要昏倒了,哈哈。

标签: c++filesearchdirectoryfind

解决方案


如果您使用的C++是支持C++17版本的编译器,则可以使用这些filesystem函数。如果您无法访问 C++17 版本,您可以尝试使用Boost库。

您可以尝试该recursive_directory_iterator函数以递归方式迭代子目录和文件,并检查您要查找的文件是否存在。

for(auto& p: fs::recursive_directory_iterator("C:/"))
        std::cout << p.path() << '\n'

参考资料:

标准::文件系统

提升文件系统


推荐阅读