Apache VFS(3): 文件过滤器和选择器
来源:互联网 发布:大话设计模式java pdf 编辑:程序博客网 时间:2024/06/05 10:56
本系列文章导航
Apache VFS(1): 基本介绍
Apache VFS(2): 文件的监听和监控
Apache VFS(3): 文件过滤器和选择器
Apache VFS(4): 事件
Apache VFS(5): 使用它!
Apache VFS(6): 几个重要的概念性接口
Apache VFS(7): 文件管理器解析文件的方法
Apache VFS提供了FileFilter接口和FileSelector接口以及FileSelectInfo接口。这三个接口很容易让人摸不着头脑,都声称是
遍历文件层次结构中用来选择文件的。只不过FileFilter说是直接的子文件 (direct children of the base)
FileSelectInfo
只有三个方法:
- getBaseFolder 返回遍历的根目录
- getDepth 返回文件相对根目录(Base Folder)的深度
- getFile 返回考虑的文件对象
FileFilter
FileFilter用来在遍历直接的子文件的过程中选择文件。只有一个方法: accept(FileSelectInfo info)
注意:使用FileSelectInfo对象作为参数。
FileSelector
只有两个方法,都使用FileSelectInfo对象作为参数:
- includeFile(FileSelectInfo info)判断是否这个文件或者目录应该被选择,这个方法使用深度优先,首先检查子文件(that is, it is called for thechildren of a folder before it is called for the folder itself)
- traverseDescendents(FileSelectInfoinfo)判断这个目录是否应该被遍历I,如果这个方法返回真的话,对每个这个目录的子文件都会调用includeFile(FileSelectInfoinfo)方法,并且每个子目录都递归遍历。对于一个目录,这个方法在includeFile方法调用之前调用。
FileSelector的实现类
Apache VFS 提供四个FileSelector实现类:
- AllFileSelector 顾名思义,将选择所有文件
- FileDepthSelector (int minDepth, int maxDepth) 选择特定深度的所有文件,以最小深度,最大深度为参数
- FileFilterSelector 选择所有给定文件对象的子文件。和FileFilter非常象。(那还要这个干什么??),可以接受一个FileFilter作为参数
- FileTypeSelector(FileType type) 选择特定类型的文件。不要被这个迷惑! ApacheVFS的文件类型FileType对象只有FILE,FILE_OR_FOLDER, FOLDER, FILE_IMAGINARY四种类型。就是文件,目录,文件或目录, 尚不存在的文件。
例子
比如我们的任务是从根目录中选择所有的以“ABC-”开头的文件, 根目录为“/base/folder"
方法一:使用FileFilter:
FileFilter ff = new FileFilter()
{
public boolean accept(FileSelectInfo fileInfo)
{
FileObject fo = fileInfo.getFile();
return fo.getName().getBaseName().startsWith("ABC-");
}
};
VFS.getManager().resolveFile("/base/folder").findFiles(new FileFilterSelector(ff));
方法二:使用FileSelector:
FileSelector ff = new FileSelector()
{
public boolean includeFile(FileSelectInfo fileInfo) throws Exception
{
FileObject fo = fileInfo.getFile();
return fo.getName().getBaseName().startsWith("ABC-");
}
public boolean traverseDescendents(FileSelectInfo fileInfo) throws Exception
{
return true;
}
};
VFS.getManager().resolveFile("/base/folder").findFiles(ff);
文章来源:http://alartin.javaeye.com/blog/92101
- Apache VFS(3): 文件过滤器和选择器
- Apache VFS(2):文件的监听和监控
- jQuery 选择器和过滤器
- Apache commons VFS 文件操作 源代码示例
- Apache VFS
- Apache VFS(7): 文件管理器解析文件的方法
- Apache commons VFS简介和ShowProperties源代码示例
- 文件选择器和颜色选择器
- Apache VFS(4): 事件
- Apache VFS:基本介绍
- 黑马程序员 jquery选择器和过滤器
- 用Apache VFS实现FTP
- Apache VFS(1):基本介绍
- Apache VFS (5): 使用它!
- apache commons-vfs访问认证
- VFS 文件读写结构图
- VFS之文件操作
- VFS 和 MTD
- 正则表达式
- Target runtime Apache Tomcat 5.5 is not defined
- Apache VFS(2):文件的监听和监控
- GDB 使用——Linux C编程
- 给一个和系统无关的高性能解决方案吧:
- Apache VFS(3): 文件过滤器和选择器
- web - css 中单位px和em的区别
- Apache VFS(4): 事件
- Apache VFS (5): 使用它!
- gridview 中文件头不换行
- Apache VFS(6): 几个重要的概念性接口
- 嵌入式研发工程师面试试题大全(ANSI CC++方面的知识 )
- python模块之smtplib: 用python发送SSL/TLS安全邮件
- C++库总结(zt)