1

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

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

从现在开始,我想使用“ FileObserver ”,扫描所有特定文件夹并在它们上设置观察者。但这是一项巨大的工作。谁能有更好的主意?

4

2 回答 2

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

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

于 2012-06-05T09:10:28.527 回答
1

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

于 2012-06-05T09:44:29.923 回答