递归扫描SD卡android ndk

时间:2014-01-29 21:44:29

标签: java android c++ android-ndk

我是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);
            }
        }
    }

1 个答案:

答案 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);
            }
        }
}