我正在开发一个openFrameworks应用程序,它允许我拖放目录以查找所有头文件。以下函数获取已删除的目录,并以递归方式扫描它(及其所有子目录)以获取头文件,并将它们推回到headerFile向量中。
目前它只会在原始目录中找到一小部分标题,但是在做了一些cout检查之后,我很确定我可以看到它正在进入子目录。如果有人能告诉我出了什么问题,我将非常感激!
这是我的代码!
void Directory::scanDirectory(ofDirectory dir)
{
int i, size;
ofDirectory* newDir;
size = dir.size();
for (i = 0; i < size; i++){
if (dir.getFile(i).isDirectory()==1){
newDir = new ofDirectory(dir.getFile(i).getAbsolutePath());
newDir->listDir();
newDir->sort();
scanDirectory(*newDir);
}
else if (dir.getFile(i).getExtension() == "h"){
headerFiles.push_back(dir.getFile(i));
}
i++;
}
}
答案 0 :(得分:0)
每个人都没问题!
JOSHUA PARIS BATTY&lt;&lt;找到了解决方案。我不小心迭代每个文件两次。我最初使用while循环并在其末尾迭代i来遍历文件。但是,一旦我将其更改为for循环,我应该取出最终的“i ++”。 Woops!
答案 1 :(得分:0)
1)size = dir.sizes()应替换为size = dir.listDir(); becoz目录需要填充..
2)你的for循环中有一个i ++ ...错误循环...
3)不需要为newdir使用指针..
检查下面的例子......
void Directory::scanDirectory(ofDirectory dir){
int i,size;
size = dir.listDir();
dir.sort();
for (int i = 0; i < size; i++){
if (dir.getFile(i).isDirectory()==1){
ofDirectory newDir(dir.getFile(i).getAbsolutePath());
ofApp:: scanDirectory( newDir );
}else {
fileslist.push_back(dir.getPath(i));
}
}
}