apache commons学习系列记录之IO组件version2.4之二
来源:互联网 发布:知乎 let it go 编辑:程序博客网 时间:2024/06/05 04:34
纲要:
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();
本人博客小站原文
- apache commons学习系列记录之IO组件version2.4之二
- apache commons学习系列记录之IO组件version2.4之一
- apache commons组件学习系列记录之lang3
- apache commons学习系列之Email组件
- apache-comnons系列之commons-io-2.5 org.apache.commons.io.IOUtils学习笔记
- apache-comnons系列之commons-io-2.5 org.apache.commons.io.FileUtils学习笔记
- apache commons组件学习系列之configuration库
- apache commons组件学习之FileUpload
- apache-comnons系列之commons-pool2.4 学习笔记
- apache-comnons系列之commons-email1.4 学习笔记
- apache-comnons系列之commons-cli1.4 学习笔记
- Java-IO之Apache Commons IO(1)
- Java-IO之Apache Commons IO(2)
- apache-comnons系列之commons-lang3 学习笔记1
- apache-comnons系列之commons-codec1.11 学习笔记
- apache-comnons系列之commons-dbutils1.7 学习笔记
- apache-comnons系列之commons-fileupload1.3.3 学习笔记
- apache-comnons系列之commons-compress1.14 学习笔记
- ASP.NET AJAX(开发代号Atlas)重要参考资源大收集
- apache commons学习系列记录之IO组件version2.4之一
- matlab 2010a linux 安装过程
- avsubtitleWriter demo解析(三):SubtitlesTextReader
- ASP.NET 服务器控件对应HTML标签
- apache commons学习系列记录之IO组件version2.4之二
- 如何处理海量数据(转)
- Openstack压力测试(二) -- 结果还不错!
- apache commons组件学习系列记录之lang3
- 博客发外链的注意事项
- 敌兵布阵-树状数组
- 一个SEOER要具备的素质
- Windows Embedded Compact 2013升级:VS2013也能编译
- ibatis 搭建步骤