我是android ndk的新手,我很感激任何帮助。如何使用检查扩展名在c ++中创建递归文件夹扫描?我知道在java中这很容易。在java中我使用:
public void scan(File root) {
File[] list = root.listFiles(tracksFilter);
for (File f : list) {
String path;
if (f.isDirectory()) {
scan(f);
} else if(path.endWith(".mp3"){
doMP3(f);
} else if(path.endWith(".png"){
doPNG(f);
}
}
}
答案 0 :(得分:1)
值得注意的是,由于多种原因,本机代码并不总能带来性能提升。在Java代码和等效的本机代码之间进行速度比较可能是有益的。结果可能会让你感到惊讶:)
那就是说,以下C ++代码应该让你朝着正确的方向前进。
...
#include <dirent.h>
#include <string>
#include <iostream>
....
static const string curDir = ".";
static const string parDir = "..";
....
void iterateDir(string path)
{
DIR *dir;
struct dirent *drnt;
dir = opendir(path.c_str());
while ((drnt = readdir(dir)) != NULL)
{
string name(drnt->d_name);
unsigned char = drnt->d_type;
if (name != curDir && name != parDir && name.length() >= 4)
{
if (type == DT_DIR) {
string newPath = path + name + "/";
iterateDir(newPath);
}
else if (name.find(".mp3") == (name.length() - 4)) {
doMP3(path + name);
}
else if (name.find(".png") == (name.length() - 4)) {
doPNG(path + name);
}
}
}