我试图使用filesystem::recursive_directory_iterator
以递归方式遍历目录中的所有文件,并且我注意到无论提供什么目录选项,Visual C ++实现都遵循目录符号链接。默认情况下,使用directory_options::none
,但none
和follow_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
创建的。)
我使用的是Visual Studio 2017版本15.4.4。
对我来说这看起来像个错误,但我想知道其他实现是做什么的。我没有Clang或gcc来测试。