private class PathFileObserver extends FileObserver{ static final String TAG="FILEOBSERVER"; /** * should be end with File.separator */ String rootPath; static final int mask = (FileObserver.CREATE | FileObserver.DELETE | FileObserver.DELETE_SELF | FileObserver.MODIFY | FileObserver.MOVED_FROM | FileObserver.MOVED_TO | FileObserver.MOVE_SELF); public PathFileObserver(String root){ super(root, mask); if (! root.endsWith(File.separator)){ root += File.separator; } rootPath = root; } public void onEvent(int event, String path) { switch(event){ case FileObserver.CREATE: Log.d(TAG, "CREATE:" + rootPath + path); break; case FileObserver.DELETE: Log.d(TAG, "DELETE:" + rootPath + path); break; case FileObserver.DELETE_SELF: Log.d(TAG, "DELETE_SELF:" + rootPath + path); break; case FileObserver.MODIFY: Log.d(TAG, "MODIFY:" + rootPath + path); break; case FileObserver.MOVED_FROM: Log.d(TAG, "MOVED_FROM:" + rootPath + path); break; case FileObserver.MOVED_TO: Log.d(TAG, "MOVED_TO:" + path); break; case FileObserver.MOVE_SELF: Log.d(TAG, "MOVE_SELF:" + path); break; default: // just ignore break; } } public void close(){ super.finalize(); } }
References
https://gist.github.com/shirou/659180