前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FileObserver原理简介

FileObserver原理简介

原创
作者头像
小胡子
修改2022-08-29 22:46:28
5020
修改2022-08-29 22:46:28
举报
文章被收录于专栏:小胡子专栏

在Java层常用FileObserver去监听文件的变化,它是基于Inotify实现的,在文件的信息发生变更以后,通过Inotify通知事件的变更。

文件事件

FileObserver事件(FileObserver.java)

Inotify事件(inotify.h)

说明

ACCESS

IN_ACCESS

读取文件内容

MODIFY

IN_MODIFY

修改文件内容

ATTRIB

IN_ATTRIB

修改文件属性,如权限,所有者,时间戳等

CLOSE_WRITE

IN_CLOSE_WRITE

写入数据并关闭

CLOSE_NOWRITE

IN_CLOSE_NOWRITE

关闭不作修改

OPEN

IN_OPEN

打开文件或目录

MOVED_FROM

IN_MOVED_FROM

文件或子目录从监控的目录中移出

MOVED_TO

IN_MOVED_TO

文件或者子目录移动到监控目录

CREATE

IN_CREATE

文件或子目录再监控文件中创建

DELETE

IN_DELETE

文件从监控目录中删除

DELETE_SELF

IN_DELETE_SELF

监控的文件或者目录已经被删除,监控停止

MOVE_SELF

IN_MOVE_SELF

监控的文件或者目录被移除,监控还是继续。

FileObserver原理

文件目录

frameworks/base/core/java/android/os/FileObserver.java

frameworks/base/core/jni/android_util_FileObserver.cpp

FileObserver内部定义了一个静态线程类ObserverThread,随着FileObserver的实例对象初始化而创建。线程在启动之后,就会开始监听指定的FD的变化,并在监控文件或者目录预定义的事件发生以后,触发onEvent回调。

它能够对一个或者一组文件或者目录进行监听,但无论监听多少文件或者目录,其监听的事件类型都是一样的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件事件
  • FileObserver原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档