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

    原文作者:跑步与开车
    原文地址: https://www.jianshu.com/p/98a7e1be4b77
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞