我必须列出我的应用程序中某些文件夹中的所有目录。为此,我写了一些这样的东西:
std::vector<std::string> FirefoxCleaner::_getDirs(std::string path) {
std::vector<std::string>* dirs = new std::vector<std::string>();
std::cout<<DT_DIR<<std::endl;
DIR *dir = opendir(path.c_str());
struct dirent *entry = readdir(dir);
while (entry != NULL) {
std::cout<<entry->d_name<<": "<<entry->d_type<<std::endl;
if (entry->d_type == DT_DIR) {
std::cout<<entry->d_name<<std::endl;
//dirs.push_back(entry->d_name);
}
entry = readdir(dir);
}
closedir(dir);
return *dirs;
}
我评论了push_back行,因为我暂时不需要它(我知道它应该是 - &gt;而不是。在那里签名)。但是,这种方法的结果是:
16
.: 24
..: 24
extensions: 24
lidv7pj1.default: 24
v0kmwatk.defaultextensions.ini: 24
你可以想象扩展和lidv7pj1.default实际上是目录。我该如何确定?
答案 0 :(得分:0)
d_type
条目是位掩码,因此您需要使用&
进行检查:
if (entry->d_type & DT_DIR)
应该解决这个问题。