如何在根路径下获取特定的子文件夹路径?

时间:2017-07-24 14:25:14

标签: c++11 visual-c++

我想获取根目录下特定文件夹的位置。 例如,我有一个根目录为C:\Dummy,我在这个文件夹中有一个子目录:

  

C:\假人\ 10 \ 20 \ MyFolder文件

现在我想在目录MyFolder下获取子目录C:\Dummy的路径。

我将编写一个函数,我将传递两个输入: 1)“根文件夹”即C:\Dummy 2)“子目录名称”,即MyFolder

String fun(string RootFolderPath, string subDirName)
{

  //if any of the sub directories consists of `subDirName` then return the 
  //path
  return subDirPath;
}

有没有办法实现这个目标?

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

使用实验性filesystem标准库,可按如下方式完成:

#include <experimental\filesystem>

namespace fs = std::experimental::filesystem;

string search_path(const string &root, const string &search)
{
    fs::path root_path(root);
    fs::path search_path(search);

    for (auto &p : fs::recursive_directory_iterator(root_path))
        {
        if (fs::is_directory(p.status()))
            {
            if (p.path().filename() == search)
                return p.path().string();
            }
        }

    return "";
}

否则,您必须使用像FindFirstFile()和FindNextFile()这样的特定于file management functions的windows.api来进行遍历。或者也许是Boost filesystem库。

答案 1 :(得分:0)

通过连接 RootFolderPath subDirName 来创建完整的目录路径(不要忘记插入&#34; \&#34;介于两者之间)。并使用以下2个Windows API:

auto bDirExists = (::PathFileExists(path) && ::PathIsDirectory(path));