Android监听SD卡文件变化

今天再一次使用到FileObserver,上一次使用还是很久之前了。总结一下FileObserver里留的一些“坑”

  1、FileObserver只能监听一个目录下的“一级”子文件,也就是说FileObserver不支持监测一个目录下嵌套子目录的文件;   2、关于FileObserver中的onEvent(int event, String path)函数。其中event在使用过程中发现总是一个很大的数,这与api中定义的1,2,4…512常量不相符。需要将event & FileObserver.ALL_EVENTS,才能得到sdk中定义的常量。究其原因,貌似event中的高位附带了一些信息;   3、经过试验发现如果监听的目录被删除了,FileObserver就没有作用了。即使后来再创建一个同样的目录。我要的效果是监听一个目录下的文件,如果这个文件被删除了就重新生成一个该文件,在调试中发现第一次删除整个目录后能重新生成,但是之后再删除就不起作用了(删除单个文件应该没有问题)。应该就是提到的这个原因。有一个解决方法就是通过handler方式,异步线程重新生成了文件后通知service,再重启对该目录的监测即可。   4、可以指定要针对文件的哪些操作动作进行监听:比如   static final int mask = (FileObserver.CREATE |      FileObserver.DELETE |      FileObserver.DELETE_SELF |     FileObserver.MODIFY |     FileObserver.MOVED_FROM |     FileObserver.MOVED_TO |     FileObserver.MOVE_SELF);           public PathFileObserver(String root){     super(root, mask);       … …     }

    原文作者:xiaochao1234
    原文地址: https://www.cnblogs.com/xiaochao1234/p/3764841.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞