Visual C ++中的recursive_directory_iterator错误

时间:2017-12-03 21:52:35

标签: c++ visual-c++ filesystems visual-studio-2017 symlink

我试图使用filesystem::recursive_directory_iterator以递归方式遍历目录中的所有文件,并且我注意到无论提供什么目录选项,Visual C ++实现都遵循目录符号链接。默认情况下,使用directory_options::none,但nonefollow_directory_symlink之间的结果没有差异。

#include <iostream>
#include <filesystem>

namespace fs = std::experimental::filesystem;

int main()
{
   for (auto const & entry : fs::recursive_directory_iterator(
      "c:\\test",
      fs::directory_options::none))
   {
      if (fs::is_regular_file(entry))
         std::cout << entry.path() << std::endl;
   }

   return 0;
}

此程序始终打印以下内容:

c:\test\readme.txt
c:\test\test\doc1.txt
c:\test\test\doc2.txt

在此示例中, C:\ test 是一个目录,其中包含一个文件( readme.txt )和一个符号链接到 D:\ test ,反过来又有两个文件。使用directory_options::none,我希望输出仅列出 c:\ test \ readme.txt 。 (顺便说一句,符号链接是使用命令mklink /d test d:\test创建的。)

enter image description here

我使用的是Visual Studio 2017版本15.4.4。

对我来说这看起来像个错误,但我想知道其他实现是做什么的。我没有Clang或gcc来测试。

0 个答案:

没有答案