我正在尝试迭代一个目录并列出里面的所有文件夹。
我查看了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,但我认为没有标志只能非递归地列出目录。
有什么想法吗?
答案 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 ...
}