今天再一次使用到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);
... ...
}

Android监听SD卡文件变化相关推荐

  1. android 视频开发sd卡,Android开发之SD卡文件操作分析

    本文实例讲述了Android开发之SD卡文件操作.分享给大家供大家参考,具体如下: 前面的文章中写过直接操作手机自带存储器的程序,这次就接着上次文章协议下对sd卡的文件操作.与自带存储不同的是使用sd ...

  2. Android 监听SD卡插入与拔出

    Android 监听SD卡插入与拔出 简单记录一下Android 如何监听SD卡插入与拔出,注意事项: 继承广播: public class SdStatusReceiver extends Broa ...

  3. android 信号强度变化,Android监听WIFI网络的变化并且获得当前信号强度

    MainActivity如下: package cc.testwifi; import android.os.Bundle; import android.app.Activity; /** * De ...

  4. android代码删除sd卡文件在哪里,android - 如何从SD卡中删除文件?

    Android 4.4及更改 除了特定于程序包的目录外,不允许应用程序向外部存储写入(删除,修改...). 正如Android文档所述: "不得允许应用程序写入辅助外部存储   设备,除了允 ...

  5. android 监听手机电量变化

    今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...

  6. android P监听SD卡热插拔执行symlink软链接的实现

    收到个android P项目的需求,要求监听SD卡hotplug热插拔,执行symlink软链接和unlink. 先看下运行效果: 拔SD卡时打印: ja310_evb:/ # logcat |gre ...

  7. Android开发动态的监听网络状态的变化

    主要思路:使用Android中的四大组件之:BrocastReceiver监听网络状态的变化.接收到网络状态改变的广播之后判断当前的网络是否可用. 创建广播接收器MyNetworkReceiver p ...

  8. Android监听手机网络变化

    Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...

  9. android 对象存储sd卡,Android网络与数据存储——File存储(实现SD卡文件浏览器)...

    Java提供了一套完整的IO流体系,包括FileInputStream.FileOutPutStream等,通过这些IO流可以非常方便的访问磁盘上的文件内容.Android同样支持以这种方式来访问手机 ...

最新文章

  1. Linux中锚定符号的作用,Linux基础(9)文本处理三剑客之grep
  2. 字符串函数 replace() 方法妙用
  3. 控制台资费管理主菜单java_java毕业设计_springboot框架的高速公路收费管理系统...
  4. 计算机网络学习笔记-02-标准化工作以及相关组织
  5. Sigma Function(LightOJ-1336)
  6. leetcode 53 python 动态规划
  7. Win7桌面设置便签和备忘录的具体操作方法
  8. 这是我转载的一篇,真的是不错《把SWF变回FLA》大家可以试试
  9. 被final关键字坑了
  10. uva10105 - Polynomial Coefficients(多项式系数)
  11. win7下笔记本电脑给手机开热点
  12. 账号、密码管理系统 python
  13. 10个最佳WordPress Star Rating插件
  14. 小程序 function(res)与(res) =的区别
  15. xdoj 字符串部分复制 233237
  16. Ubuntu20.04LTS 安装配置
  17. XenDesktop7.15CU3 文件重定向Bug
  18. 一种非极大值抑制(non_max_suppression, nms)的代码实现方式
  19. 畅享10S 鸿蒙,华为畅享10S正式发布 4800万超广角AI三摄1799元起
  20. 【大数据入门核心技术-Flume】(四)使用Flume采集数据到Hive

热门文章

  1. Windows 10第四个大补丸来啦
  2. Head First C 第八章 静态库与动态库 创建动态库
  3. dede日期时间标签调用大全
  4. springboot静态网页放哪里_STEP4.1 第一个SpringBoot项目
  5. 右左法则----复杂指针解析
  6. Python 的 time 模块导入及其方法
  7. [已解决]window下Can't connect to MySQL server on 'localhost' (10061)与无法启动MYSQL服务”1067 进程意外终止”...
  8. ApacheFlink简介
  9. 我的世界之史蒂夫生存记
  10. H5新特性 input type=date 在手机上默认提示显示无效解决办法