一、概述
android.os包下面的FileObserver是一个用于监听文件访问创建修改删除移动等操作的监听器,基于Linux的INotfy
FileObserver是个抽象类,必须要继承它才能使用,每个FileObserver
监听一个单独的文件或者文件夹,如果监听的是一个文件夹,那么文件夹下所有文件或者级联子目录的改变都会触发监听事件。
二、监听的事件类型
- ACCESS
即文件被访问 - MODIFY
文件被修改 - ATTRIB
文件被修改属性,如chmod,chown,touch等 - CLOSE_WRITE
可写文件被CLOSE - CLOSE_NOWRITE
不可写文件被CLOSE - OPEN
文件被打开 - MOVED_FROM
文件被移走 - MOVED_TO
文件被移进 - CREATE
创建文件夹 - DELETE
文件被删除 - DELETESELF
自删除,即一颗各执行文件在执行时删除自己 - CLOSE
文件被关闭,等同于(IN_CLOSE_WRITE|IN_CLOSE_NOWRITE) - ALLEVENTS
包括上面的所有事件
上面所有的静态变量都是
FileObserver
的静态属性
三、例
- 创建目录监听器
public class SDCardListener extends FileObserver(){
public SDCardListener(String path){
super(path);
}
@override
public onEvent(int event,String path){
switch(event){
case FileObserver.ALLEVENTS:
Log.d("all","path:"+path);
break;
case FileObserver.CREATE:
break;
}
}
}
- 给目录设置监听器
SDCardListener listener = new SDCardListener("目录");
//开始监听
listener.startWatching();
/**
*在这里做一些操作,比如创建目录什么的
**/
//停止监听
listener.stopWatching();
四、注意事项
FileObserver对象必须保持一个引用,确保不被垃圾回收器回收掉,否则就不会触发事件,这里可以考虑使用Service服务。
网友评论