在c ++ wxDir中非递归地迭代目录

时间:2015-11-10 06:50:28

标签: c++ directory wxwidgets

我正在尝试迭代一个目录并列出里面的所有文件夹。 我查看了wx documentation并使用了GetAllFiles

目前我使用:

wxArrayString files;
size_t n, i;

n = wxDir::GetAllFiles("c:/temp/", &files, wxEmptyString, wxDIR_DIRS);

for(i=0; i<n; i++) {
    myOwnPrint("folders: %s", files.Item(i));
}

它列出了所有目录和子目录..

我想要的只是列出所有外部文件夹..

我检查了wxDirFlags,但我认为没有标志只能非递归地列出目录。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

GetAllFiles()是一个帮助器方法,允许在进行递归目录遍历时避免必须定义一个wxDirTraverser派生类,所以它没有多大意义让它不能递归 - 这就是它的用途。

对于给定目录中的文件和/或目录的简单迭代,只需使用评论中已提及的GetFirst()GetNext()

wxDir dir(path);
if ( !dir.IsOpened() ) {
   ... handle error ...
}
wxString subdir;
for ( bool cont = dir.GetFirst(&subdir, wxString(), wxDIR_DIRS);
      cont;
      cont = dir.GetNext(&subdir) ) {
   ... do whatever you need to do with subdir ...
}