FileObserver使用

当我们要对一个文件或者文件夹进行监听的时候,我们可以使用android api中的android.os.FileObserver ,下面就来介绍如何使用。

1.首先我们要new一个FileObserver对象,并根据自己的文件夹路径对其实例化,如下:

FileObserver observer;
observer = new FileObserver("文件路径") {
			@Override
			public void onEvent(int event, final String file) {
				                                                                             			                   }
		};

2.监听你所关心的事件:在onEvent(int event,String path)中,通过匹配event的值,可以捕获所发生的事件

例子:

public void onEvent(int event, String path) {

       switch(event){

           case android.os.FileObserver.ALL_EVENTS:

              //所有事件 相当于default的功能

              /**

               * 相关操作

               */

              break;

           case android.os.FileObserver.CREATE:

              //文件被创建

              /**

               * 相关操作

               */

              break;

           case android.os.FileObserver.OPEN :

              //文件被打开

              /**

               * 相关操作

               */

              break;

           case android.os.FileObserver.ACCESS:

              //打开文件后,读文件内容操作

              /**

               * 相关操作

               */

              break;

           case android.os.FileObserver.MODIFY:

              //文件被修改

              /**

               * 相关操作

               */

              break;

           case android.os.FileObserver.ATTRIB:

              //未明操作

              /**

               * 相关操作

               */

              break;

           case android.os.FileObserver.CLOSE_NOWRITE:

              //没有编辑文件,关闭

              /**

               * 相关操作

               */

              break;

           case android.os.FileObserver.CLOSE_WRITE:

              //编辑完文件,关闭

              /**

               * 相关操作

               */

              break;

           case android.os.FileObserver.DELETE:

              //文件被删除

              /**

               * 相关操作

               */

              break;

           case android.os.FileObserver.MOVED_FROM:

              //文件被移动

              /**

               * 相关操作

               */

              break;

                     

       }

}


3.  筛选监听事件,防止进入死循环

上面列出了FileObserver所能监听的大部分事件,但是在实际应用当中并不需要监听全部事件,只选择我们自己关心的事件来进行监听就可以,过多的事件监听会导致程序逻辑的混乱。

例如在监听文件被访问的操作时,打开这个文件

case android.os.FileObserver.ACCESS:

              //打开文件后,读文件内容操作

              File file = new File(filePath+File.separator+path);

              String data = readFile(file);//读取文件内容操作

           break;

当程序执行到readFile(file)时,onEvent()方法会再被触发,然后匹配到是ACCESS事件,又回到readFile(file)操作,结果导致死循环。

4.启用文件监听器.

在自己需要的地方启动observer.startWatching();

5.取消文件监听器.

当我们不需要再进行监听时,取消监听observer.stopWatching();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值