apache commons io 2.2(三)Monitor部分

来源:互联网 发布:java基础知识txt下载 编辑:程序博客网 时间:2024/04/30 13:00

近段时间,对apache commons io的源码做了深入的了解,在此把一些见解与大家分享。

首先我选择了大部分框架还依赖的2.2版本而不是最新的2.4版本(2.5发行版还没有发布)进行源码的研读,今天就简介一下commons io的monitor部分。


Monitor部分较为简单,主要由一个线程处理类、观察者模式部分、监听适配器部分组成。

但我们应该先来了解一下monitor所依赖的以下commons-io类:

org.apache.commons.io.FileUtils

文件工具类,该类只使用了它的一个空文件数组常量。

有写文件、读文件、创建文件夹、复制文件/文件夹、删除文件/文件夹、从URL中获取文件、遍历后显示文件集结果、比较文件内容、修改文件最后修改时间、检查文件正确性,这些功能。


org.apache.commons.io.comparator.NameFileComparator

文件名文件比较器,该类就是用来判断观察主体的。

该类是文件全名称相关的比较器,所有关于文件全名称的比较器都需要处理大小写敏感问题,其构造方法通过多态实现指定大小写敏感类型的功能,而其默认是大小写敏感的;该类通过文件名进行比较,其名称由File.getName()方法获取,如果文件名相同则返回0


org.apache.commons.io.IOCase

输入输出大小写敏感类

这个类专门处理流中的大小写问题。不同的文件系统对大小写敏感具有不同的规则。Windows是大小写不敏感的,Unix是大小写敏感的。IOCase可以自适应大小写敏感问题、基于当前系统的大小写敏感路径比较。


线程处理类:

org.apache.commons.io.monitor.FileAlterationMonitor

文件变更监视器类

这是一个线程实现类其内部代理了一个FileAlterationObserver对象集合,其功能是实现监控文件或文件夹的变更,包括增删改的变更,但当前类只实现线程。


观察者模式部分:

org.apache.commons.io.monitor.FileAlterationObserver

文件变更观察者类

该类使用了观察者模式监控指定文件或目录的变更,包括增删改的变更,与FileEntry配合使用。其监控的文件可以通过传递路径的方式来确定,该路径必须与File.getName()的返回值全匹配。FileEntry是观察主体,FileAlterationObserver是观察者。其checkAndNotify()方法观察主体是否有变化,并通过递归来观察文件夹内的所有文件,其使用FileEntry在内存中保存所监听的文件的状态,在调用checkAndNotify()的时候将FileEntry与实际的File对象进行对比,从而判断出是否有创建、编辑、删除的变化。一般会创建一个FileAlterationMonitor类对象通过后台线程进行定时检测。

 

org.apache.commons.io.monitor.FileEntry

文件观察主体类

一个观察者模式的主体,代表文件的类。其记录了文件或文件夹某个时刻的状态,当调用refresh()方法时其对文件进行同步,然后返回是否变更的结果。


监听适配器部分:

org.apache.commons.io.monitor.FileAlterationListener

文件变更监听器类

用于监听文件系统事件的接口,其可以监听文件夹的创建、文件夹的变更、文件夹的删除、文件的创建、文件的变更、文件的删除。

 

org.apache.commons.io.monitor.FileAlterationListenerAdaptor

文件变更监听适配器类

该类使用了适配器模式,其是适配FileAlterationListener类。需要子类进行具体实现。




ONE FOR IT是一个呆萌CTO打理的资讯读物,每天只为你准备一篇IT行业新鲜资讯。互联网的前沿,一篇就够了。(ID:OFI)



0 0
原创粉丝点击