Created
November 3, 2014 15:54
-
-
Save tushroy/e37564c462f3dfee449c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.File; | |
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.Stack; | |
import android.os.FileObserver; | |
public class TusharFileObserver extends FileObserver { | |
public static int CHANGES_ONLY = CLOSE_WRITE | MOVE_SELF | MOVED_FROM; | |
List<SingleFileObserver> mObservers; | |
String mPath; | |
int mMask; | |
public TusharFileObserver(String path) { | |
this(path, ALL_EVENTS); | |
} | |
public TusharFileObserver(String path, int mask) { | |
super(path, mask); | |
mPath = path; | |
mMask = mask; | |
} | |
@Override | |
public void startWatching() { | |
if (mObservers != null) return; | |
mObservers = new ArrayList<SingleFileObserver>(); | |
Stack<String> stack = new Stack<String>(); | |
stack.push(mPath); | |
while (!stack.empty()) { | |
String parent = stack.pop(); | |
mObservers.add(new SingleFileObserver(parent, mMask)); | |
File path = new File(parent); | |
File[] files = path.listFiles(); | |
if (files == null) continue; | |
for (int i = 0; i < files.length; ++i) { | |
if (files[i].isDirectory() && !files[i].getName().equals(".") | |
&& !files[i].getName().equals("..")) { | |
stack.push(files[i].getPath()); | |
} | |
} | |
} | |
for (int i = 0; i < mObservers.size(); i++) | |
mObservers.get(i).startWatching(); | |
} | |
@Override | |
public void stopWatching() { | |
if (mObservers == null) return; | |
for (int i = 0; i < mObservers.size(); ++i) | |
mObservers.get(i).stopWatching(); | |
mObservers.clear(); | |
mObservers = null; | |
} | |
@Override | |
public void onEvent(int event, String path) { | |
} | |
private class SingleFileObserver extends FileObserver { | |
private String mPath; | |
public SingleFileObserver(String path, int mask) { | |
super(path, mask); | |
mPath = path; | |
} | |
@Override | |
public void onEvent(int event, String path) { | |
String newPath = mPath + "/" + path; | |
TusharFileObserver.this.onEvent(event, newPath); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment