我想在C++中列出目录中的文件夹,理想情况是以便携式(使用主要操作系统)方式列出文件夹。我尝试使用POSIX,它工作正常,但我如何确定找到的项目是否是一个文件夹?仅列出目录中的文件夹
19
A
回答
5
使用C++ 17 std::filesystem
库:
std::vector<std::string> get_directories(const std::string& s)
{
std::vector<std::string> r;
for(auto& p : std::filesystem::recursive_directory_iterator(s))
if(p.status().type() == std::filesystem::file_type::directory)
r.push_back(p.path().string());
return r;
}
4
查找stat
函数。 Here是一个描述。一些示例代码:
struct stat st;
const char *dirname = "dir_name";
if(stat(dirname, &st) == 0 && S_ISDIR(st.st_mode)) {
// "dir_name" is a subdirectory of the current directory
} else {
// "dir_name" doesn't exist or isn't a directory
}
2
我觉得不得不提到PhysFS。我只是将它集成到我自己的项目中。它提供真正的跨平台(Mac/Linux/PC)文件操作,甚至可以解压zip,7zip,pak等各种存档定义。它有几个功能(PHYSFS_isDirectory,PHYSFS_enumerateFiles),它可以确定你所要求的。
10
这里遵循了boost filesystem documentation(稍微修改)报价向您展示它是如何做:
void iterate_over_directories(const path & dir_path) // in this directory,
{
if (exists(dir_path))
{
directory_iterator end_itr; // default construction yields past-the-end
for (directory_iterator itr(dir_path);
itr != end_itr;
++itr)
{
if (is_directory(itr->status()))
{
//... here you have a directory
}
}
}
}
+0
如何以字符串的形式获取目录名? – ar2015 2017-07-05 01:17:54
25
你可以使用opendir()
和readdir()
列出目录和子目录。下面的例子打印当前路径下的所有子目录:
#include <dirent.h>
#include <stdio.h>
int main()
{
const char* PATH = ".";
DIR *dir = opendir(PATH);
struct dirent *entry = readdir(dir);
while (entry != NULL)
{
if (entry->d_type == DT_DIR)
printf("%s\n", entry->d_name);
entry = readdir(dir);
}
closedir(dir);
return 0;
}
+0
您可以使用这些功能仅选择文件夹。我已经添加了一个例子来告诉你如何。 – 2011-02-18 16:12:18
1
相关问题
- 1. 仅列出目录中的文件夹
- 2. 仅列出目录中的文件?
- 3. 在cocos2dx的Resources/Assets文件夹中列出文件/目录
- 4. 在Unix C++文件夹的根目录中列出文件和目录
- 5. 仅在C#中列出子文件夹?
- 6. 如何仅使用PHP列出当前目录中的文件夹
- 7. php - 在一个目录中列出文件夹和文件
- 8. 仅列出bash中的目录和子目录中的文件名
- 9. 仅观看列出的文件夹PM2
- 10. 从超链接的Excel目录中列出文件夹和子文件夹?
- 11. 找到目录文件夹,而不列出父目录
- 12. 从包括文件夹和子文件夹的目录列出文件名
- 13. 试图列出没有特定目录的文件/文件夹
- 14. 在文件夹中列出目录中所有文件的文件信息
- 15. 列出我的目录中的所有文件夹visual basic
- 16. 仅列出目录中的数字文件名
- 17. 如何列出仅在鱼壳中的文件/目录?
- 18. PHP opendir()仅列出文件夹
- 19. 循环通过目录中的文件夹而不列出
- 20. 使用Windows JScript在APPDATA中列出文件夹的子目录
- 21. 如何列出ftp目录中的所有文件夹?
- 22. 列出目录中的文件夹,更新功能
- 23. 仅列出目录中的文本文件并编辑每个文本文件
- 24. 目录中的文件夹子文件夹中的文件列表
- 25. Kivy FileChooser:仅列出目录
- 26. Java FileFilter仅列出目录
- 27. 仅列出文件夹中的图像文件
- 28. 列出目录+子目录中的所有文件和目录
- 29. 如何在Linux中列出目录中文件和文件夹的总大小?
- 30. 在当前工作目录中列出文件夹
OK,但它在Windows上工作? – m4tx 2011-02-18 16:17:02
是:http://msdn.microsoft.com/en-us/library/14h5k7ff.aspx – 2011-02-18 16:31:27