c++ - 如何使用类似 opendir 的函数打开目录,但使用文件系统库?
问题描述
如何使用类似 opendir 的函数列出目录,但使用 C++ 中的文件系统库?
dirent 中的 opendir 函数,打开目录但我们看不到它,这没关系。
for (const auto & entry : fs::recursive_directory_iterator(dir))
基本上,这是我用来遍历目录的代码。fs 是文件系统。
现在,opendir 实际上是静默打开目录。现在如果它没有足够的权限,它就无法打开该目录,它会返回,No such directory。(这个函数不是我自己写的)
void SearchFiles(std::string Directory)
{
DIR* pDir;
if((pDir = opendir(Directory.c_str())) != NULL)
{
struct dirent* pEntry;
/* print all the files and directories within directory */
while((pEntry = readdir(pDir)) != NULL)
{
if(pEntry->d_type == DT_DIR)
{
std::string Name = pEntry->d_name;
if(Name != "." && Name != "..")
SearchFiles(Directory + Name + '\\');
}
else if(pEntry->d_type == DT_REG)
{
g_vFiles.push_back(Directory + pEntry->d_name);
}
}
closedir(pDir);
}
else
{
printf("No such directory: '%s'\n", Directory.c_str());
}
}
现在,我不太了解上面的代码,但是是的...
不确定文件系统库有多新,但它有什么功能或其他东西,所以我可以让它像上面那样做吗?
因为当将我的方法与上面的文件系统代码一起使用时,它会列出所有内容,即使是我无权访问的内容,我猜。
如果不使用 dirent.h 则不存在。我真的必须使用 * 来执行 pDir 吗?我不能只写 DIR pDir,因为指针的东西对我来说不是很清楚。
解决方案
推荐阅读
- python - 如何根据其他列中的值从 Pandas 数据框中查找重复项?
- vb.net - 如何使用 vb.net 查询密钥的注册表权限
- azure-devops - 如何在 azureDevops 中添加自定义管道
- pyspark - 当 PySpark 将 Hive 表读取到 pandas 时,Apache Arrow OutOfMemoryException
- java - 如何从 Volley 请求的 JSON 响应中读取标头?
- php - 存储文件夹问题 - 获取无效参数异常
- javascript - 如何将函数随机数保存在变量中
- python - 将带有元组列表的字典转换为数据框
- python - 使用 Python 计算表上出现的字符串
- blueprism - 使用 VBO 使用 Web API 无结果