Most visited

Recently visited

Added in API level 1

FileObserver

public abstract class FileObserver
extends Object

java.lang.Object
   ↳ android.os.FileObserver


监视文件(使用inotify )在文件被设备上的任何进程(包括本文)访问或更改后触发事件。 FileObserver是一个抽象类; 子类必须实现事件处理程序onEvent(int, String)

每个FileObserver实例都监视单个文件或目录。 如果监视目录,则会针对受监视目录内的所有文件和子目录触发事件。

事件掩码用于指定要报告哪些更改或动作。 事件类型常量用于描述事件掩码中的可能更改以及事件回调中实际发生的事件。

警告 :如果FileObserver被垃圾收集,它将停止发送事件。 为确保您继续接收事件,您必须保留对某个其他活动对象的FileObserver实例的引用。

Summary

Constants

int ACCESS

事件类型:数据是从文件中读取的

int ALL_EVENTS

事件掩码:合并的所有有效事件类型

int ATTRIB

事件类型:元数据(权限,所有者,时间戳)已明确更改

int CLOSE_NOWRITE

事件类型:有人让文件或目录以只读方式打开,并关闭它

int CLOSE_WRITE

事件类型:有人打开文件或目录进行写入,然后关闭它

int CREATE

事件类型:在受监视的目录下创建新文件或子目录

int DELETE

事件类型:文件已从受监视的目录中删除

int DELETE_SELF

事件类型:被监控的文件或目录已被删除; 监控有效停止

int MODIFY

事件类型:数据被写入文件

int MOVED_FROM

事件类型:文件或子目录已从受监视的目录中移出

int MOVED_TO

事件类型:文件或子目录已移至受监视的目录

int MOVE_SELF

事件类型:被监控的文件或目录已被移动; 监控继续

int OPEN

事件类型:打开文件或目录

Public constructors

FileObserver(String path)

等同于FileObserver(路径,FileObserver.ALL_EVENTS)。

FileObserver(String path, int mask)

为某个文件或目录创建一个新的文件观察器。

Public methods

abstract void onEvent(int event, String path)

事件处理程序必须由子类实现。

void startWatching()

开始观看事件。

void stopWatching()

停止观看事件。

Protected methods

void finalize()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。

Inherited methods

From class java.lang.Object

Constants

ACCESS

Added in API level 1
int ACCESS

事件类型:数据是从文件中读取的

常数值:1(0x00000001)

ALL_EVENTS

Added in API level 1
int ALL_EVENTS

事件掩码:合并的所有有效事件类型

常量值:4095(0x00000fff)

ATTRIB

Added in API level 1
int ATTRIB

事件类型:元数据(权限,所有者,时间戳)已明确更改

常量值:4(0x00000004)

CLOSE_NOWRITE

Added in API level 1
int CLOSE_NOWRITE

事件类型:有人让文件或目录以只读方式打开,并关闭它

常量值:16(0x00000010)

CLOSE_WRITE

Added in API level 1
int CLOSE_WRITE

事件类型:有人打开文件或目录进行写入,然后关闭它

常量值:8(0x00000008)

CREATE

Added in API level 1
int CREATE

事件类型:在受监视的目录下创建新文件或子目录

常量值:256(0x00000100)

DELETE

Added in API level 1
int DELETE

事件类型:文件已从受监视的目录中删除

常量值:512(0x00000200)

DELETE_SELF

Added in API level 1
int DELETE_SELF

事件类型:被监控的文件或目录已被删除; 监控有效停止

常量值:1024(0x00000400)

MODIFY

Added in API level 1
int MODIFY

事件类型:数据被写入文件

常量值:2(0x00000002)

MOVED_FROM

Added in API level 1
int MOVED_FROM

事件类型:文件或子目录已从受监视的目录中移出

常量值:64(0x00000040)

MOVED_TO

Added in API level 1
int MOVED_TO

事件类型:文件或子目录已移至受监视的目录

常量值:128(0x00000080)

MOVE_SELF

Added in API level 1
int MOVE_SELF

事件类型:被监控的文件或目录已被移动; 监控继续

常量值:2048(0x00000800)

OPEN

Added in API level 1
int OPEN

事件类型:打开文件或目录

常量值:32(0x00000020)

Public constructors

FileObserver

Added in API level 1
FileObserver (String path)

等同于FileObserver(路径,FileObserver.ALL_EVENTS)。

Parameters
path String

FileObserver

Added in API level 1
FileObserver (String path, 
                int mask)

为某个文件或目录创建一个新的文件观察器。 监控不会从创建开始! 您必须先致电startWatching()然后才能收到活动。

Parameters
path String: The file or directory to monitor
mask int: The event or events (added together) to watch for

Public methods

onEvent

Added in API level 1
void onEvent (int event, 
                String path)

事件处理程序必须由子类实现。

此方法在特殊的FileObserver线程上调用。 它独立于任何线程运行,因此请注意使用适当的同步! 考虑使用post(Runnable)将事件处理工作转移到主线程以避免并发问题。

事件处理程序不得抛出异常。

Parameters
event int: The type of event which happened
path String: The path, relative to the main monitored file or directory, of the file or directory which triggered the event

startWatching

Added in API level 1
void startWatching ()

开始观看事件。 受监视的文件或目录此时必须存在,否则不会报告事件(即使稍后显示)。 如果监控已经开始,此调用不起作用。

stopWatching

Added in API level 1
void stopWatching ()

停止观看事件。 某些事件可能正在进行中,因此即使此方法完成后,事件仍可能会继续进行报告。 如果监视已经停止,则此呼叫不起作用。

Protected methods

finalize

Added in API level 1
void finalize ()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize方法以处置系统资源或执行其他清理。

的常规协定finalize是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize方法可以采取任何行动,包括再制作该对象提供给其他线程; 但是, finalize的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。

Objectfinalize方法Object执行特殊操作; 它只是正常返回。 Object子类可能会覆盖此定义。

Java编程语言不保证哪个线程将为任何给定的对象调用finalize方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。

在针对某个对象调用 finalize方法之后,在Java虚拟机再次确定不再有任何方法可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。

对于任何给定的对象,Java虚拟机永远不会多次调用 finalize方法。

finalize方法引发的任何异常 finalize导致终止此对象的终止,但会被忽略。

Hooray!