我想在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