2

ファイルがいつ変更されたかを判断しようとしています。現在、次を含むクラスファイルオブザーバークラスがあります

public class fileObserver extends FileObserver {
    public String absolutePath;
    public fileObserver(String path) {
        super(path, FileObserver.ALL_EVENTS);
        absolutePath = path;
    }

    @Override
    public void onEvent(int event, String path) {
        if (path == null) {
            return;
        }
        if (event == FileObserver.MODIFY) {
            Log.d("change","changed");
        }
    }
}

そして私の主な活動では、

fileObserver test = new fileObserver(fullpathnamehere);
test.startWatching();

fullpathnamehere は、観察しようとしているファイルのファイル パスです。確認したところ、ファイル パスは有効です。誰が私が間違っているのか教えてもらえますか?

4

4 に答える 4

1

onEvent()パスが正しくないため、メソッドは呼び出されていません:

event fileObserver test = new fileObserver(fullpathnamenere);
test.startWatching();

ファイルのパスが正しいことを確認してください。

使用してみてください:

String fullpathnamenere = Environment.getExternalStorageDirectory().getPath() + "/stuff.txt";

アップデート:

(マーク・マーフィー氏のおかげで) FileObserverが再帰的でないことがわかりました!

これを確認してください https://code.google.com/p/android/issues/detail?id=33659

https://github.com/owncloud/android/blob/master/src/com/owncloud/android/utils/RecursiveFileObserver.javaの使用をお勧めしますRecursiveFileObserver

于 2015-05-27T17:34:58.590 に答える
0

onEvent() メソッドを次のように変更します...

 @Override
    public void onEvent(int event, String path) {
        if (path == null) {
            return;
        }
        if ((FileObserver.MODIFY & event)!=0&&path.equals("file_name")) {
            Log.d("change","changed");
        }
    }

活動中

fileObserver test = new fileObserver(parent_dir_path_of_the_file);
test.startWatching();
于 2015-05-27T17:37:51.220 に答える