apache commons学习系列记录之IO组件version2.4之二

纲要:

org.apache.commons.io.filefilter 文件过滤器

org.apache.commons.io.comparator比较器

LockableFileWriter

org.apache.commons.io.monitor侦测文件或目录的变化情况。



二、org.apache.commons.io.filefilter 文件过滤器

组合过滤器,预定义的各种过滤器,以及正则表达式过滤,文件大小过滤,扩展名过滤等等。

IOFileFilter接口继承了jdk中的FileFilter,FilenameFilter接口

FileFilter的组合:

    封装多个Filter从而组合成一个新的FileFilter:如:AndFileFilter,OrFileFilter类似

具体的Filter实现类:

CanReadFileFilter:枚举:CAN_READ,CONNOT_READ,READ_ONLY等

CanWriteFileFilter枚举:CAN_WRITE,CANNOT_WRITE

HiddenFileFilter:HIDDEN,VISIBLE

DirectoryFileFIlter枚举:DIRECTORY

EmptyFileFilter枚举:EMPTY,NOT_EMPTY

FalseFileFilter枚举:FALSE,总是返回false的过滤器;还有一个TrueFileFilter

FileFileFilter枚举:FILE


RegexFileFilter:根据正则表达式过滤:

SizeFileFilter:根据文件大小过滤:

PrefixFileFilter,
SuffixFileFilter:根据后缀过滤:




1. 过滤器组合AndFileFilter、OrFileFilter


AndFileFilter(IOFileFilter filter1, IOFileFilter filter2)

         Constructs a new file filter that ANDs the result of two other filters.    

AndFileFilter(List<IOFileFilter> fileFilters)

         Constructs a new instance ofAndFileFilterwith the specified list of filters.    

2.RegexFileFilter:根据正则表达式过滤:


File dir = new File(".");
FileFilter fileFilter = new RegexFileFilter("^.*[tT]est(-\\d+)?\\.java$");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++) {
  System.out.println(files[i]);
}

3.SizeFileFilter:根据文件大小过滤:

File dir = new File(".");
String[] files = dir.list( new SizeFileFilter(1024 * 1024) );
for ( int i = 0; i < files.length; i++ ) {
    System.out.println(files[i]);
}

SizeFileFilter(long size)
          Constructs a new size file filter for files equal to or
larger than a certain size.SizeFileFilter(long size,boolean acceptLarger)
          Constructs a new size file filter for files based on a certain size threshold.

对于acceptLarger:acceptLarger- if true, files equal to or larger are accepted,
otherwise smaller ones (but not equal to)

4.SuffixFileFilter

SuffixFileFilter:根据后缀过滤:
File dir = new File(".");
String[] files = dir.list( new SuffixFileFilter(".java") );
for (int i = 0; i < files.length; i++) {
    System.out.println(files[i]);
}

SuffixFileFilter(List<String> suffixes);

SuffixFileFilter(String[] suffixes)

SuffixFileFilter(List<String> suffixes, IOCase caseSensitivity)其中IOCase枚举SENSITIVE,INSENSITIVE



三、org.apache.commons.io.comparator
文件比较器与过滤器的用法类似。具体看API文档。
四其他包中的有用方法:

LockableFileWriter确保只有一个线程在写入文件。给文件加锁写入,在调用close()方法时释放。确保多线程写入安全性。除非文件特别重要时采用此方法。


五、org.apache.commons.io.monitor侦测文件或目录的变化情况。


FileAlterationMonitor, FileAlterationObserver和FileAlterationListener接口与FileAlterationListenerAdapter:开启一个线程来实时监听文件的变化。
如文件或目录改变,删除,创建等事件


File directory = new File(new File("."), "src");
    FileAlterationObserver observer = new FileAlterationObserver(directory);
    observer.addListener(...);
    observer.addListener(...);
创建观察者后有两种选择,1.手动运行观察和停止;2.通过FileAlterationMonitor来启动一个新的线程进行统一的管理。
第一种方式如下
 // intialize
    observer.init();
    ...
    // invoke as required
    observer.checkAndNotify();
    ...
    // finished
    observer.finish();
第二种方式:会启动一个新的线程来进行管理所有的观察者。同时可以指定时间间隔。以避免频繁检查。
long interval = ...
    FileAlterationMonitor monitor = new FileAlterationMonitor(interval);
    monitor.addObserver(observer);//注册观察者到监听器
    monitor.start();
    ...
    monitor.stop();

本人博客小站原文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值