Android中的FileObserver

一、概述

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服务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,453评论 0 6
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,637评论 0 17
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,987评论 6 342
  • 汗水 挂满脊梁 泪水 滑过脸颊 日出而作,日落而息 似乎永未变 父亲 沉默不话 乡亲们说他嗜酒如命 可我 很...
    春城一粟阅读 171评论 0 3