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

DirectoryWalkerクラスはorg.apache.commons.ioライブラリから拡張できます。

于 2012-06-05T09:44:29.923 に答える