FileObserver -> onEvent(event, path): path is NULL
android, fileobserver
Solution
According to the documentation of `onEvent()`:
The path, relative to the main monitored file or directory, of the file or directory which triggered the event
So I guess when `path` is `null` it is the the specified file or directory...
You need to keep track of the original path yourself. And append the `path` of `onEvent()` to this path to get the full path (unless you are tracking a file and its value is always `null`):
FileObserver observer = new FileObserver(imageUri.getPath()) {
public String basePath;
@Override
public void onEvent(int event, String path) {
String fullPath = basePath;
if(path != null) {
// Eventually add a '/' in between (depending on basePath)
fullPath += path;
}
Log.d(TAG, "FILE: "+fullPath);
}
};
observer.basePath = imageUri.getPath();
observer.startWatching();
I tried to keep the example as close to your code snippet as possible. But, it is much better to create a full-blown class extending `FileObserver`, so you can add an constructor to store the `basePath` and are not required to access the public field from outside the class/instance!
Problem
I want to know when a file is finished writing, and to do that I'm trying to use `FileObserver`. I'm doing it like this: ``` FileObserver observer = new FileObserver(imageUri.getPath()) { @Override public void onEvent(int event, String path) { if(event == FileObserver.CLOSE_WRITE) Log.d(TAG, "FILE: "+path); } }; observer.startWatching(); ``` `imageUri` is a valid `Uri`. When the file is closed I get the following log entry: ``` FILE: null ``` Why is it `null`? It's possible that the user writes several files, so I need to know which one is triggering the event. Thanks!