如何监控名称中包含“download”等特定字符串的所有SD卡文件夹?

时间:2012-06-05 08:31:23

标签: java android file-io android-sdcard

在我的APP中,我希望监控名称中包含“下载”的所有sdcard文件夹,无论它们在哪个级别,如果新文件添加到这些文件夹,我想要注意自己。

该文件夹可能位于根路径的子目录中,也可能位于“子”目录中。

从现在起我想到使用“ FileObserver ”,扫描所有特定文件夹并在其上设置观察者。但这是一项巨大的工作。任何人都可以有更好的主意吗?

2 个答案:

答案 0 :(得分:1)

您可以使用:

String sdCardState = Environment.getExternalStorageState(); 
if( !sdCardState.equals(Environment.MEDIA_MOUNTED ) ) {
    displayMessage("No SD Card.");
    return;
} else {
    File root = Environment.getExternalStorageDirectory();
    lookForDownloadDirectories(root);
}

// lookForDownloadDirectories() method:

public void lookForDownloadDirectories(File dir) {
    if( dir.getName().equalsIgnoreCase("download") ) {
        doSomethingWithDownloadDirectory(dir);
    }
    String[] filesAndDirectories = dir.list();
    for( String fileOrDirectory : filesAndDirectories) {
        File f = new File(dir.getAbsolutePath() + "/" + fileOrDirectory);
        if( f.isDirectory() ) {
            lookForDownloadDirectories(f);
        }
    } 
}

这是递归方法,如您所知,耗费时间和资源......

答案 1 :(得分:1)

您可以从org.apache.commons.io库扩展DirectoryWalker类。