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 the children of a folder before it is called for the folder itself)
- traverseDescendents(FileSelectInfo info) 判断这个目录是否应该被遍历I,如果这个方法返回真的话,对每个这个目录的子文件都会调用includeFile(FileSelectInfo info)方法,并且每个子目录都递归遍历。对于一个目录,这个方法在includeFile方法调用之前调用。
FileSelector的实现类
Apache VFS 提供四个FileSelector实现类:
- AllFileSelector 顾名思义,将选择所有文件
- FileDepthSelector (int minDepth, int maxDepth) 选择特定深度的所有文件,以最小深度,最大深度为参数
- FileFilterSelector 选择所有给定文件对象的子文件。和FileFilter非常象。(那还要这个干什么??),可以接受一个FileFilter作为参数
- FileTypeSelector (FileType type) 选择特定类型的文件。不要被这个迷惑! Apache VFS的文件类型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);
分享到:
相关推荐
适用于VFS(Apache Commons虚拟文件系统)的Amazon S3驱动程序最新分支4.xx如何将依赖项添加到您的Maven构建中对于具有嵌入式AWS开发工具包的工件(引导的最简单方法) <dependency> <groupId>...对于没有依赖关系的...
s/yaffs2/yaffs_vfs.c: In function 'yaffs_read_super': fs/yaffs2/yaffs_vfs.c:2383:2: error: implicit declaration of function 'get_sb_bdev' fs/yaffs2/yaffs_vfs.c: At top level: fs/yaffs2/yaffs_vfs.c:...
Apache VFS提供了一种虚拟文件系统,能够让你通过程序很方便的和位于本地文件系统,FTP文件系统,HTTP文件打交道。 在Apache VFS中核心是FileObject接口。它代表一个文件,和Java File不同,它具有更多延伸的功能和...
VFS文件编辑
Apache Commons VFS Apache Commons VFS 是一个虚拟文件系统库。文档更多信息可以在上找到。 可以浏览 。 与 Apache Commons VFS 的使用相关的问题应该发布到。我在哪里可以获得最新版本? 您可以从我们的下载源代码...
创建和安装文件系统后,您可以选择通过PHP的内置函数,VFS接口或另一个文件系统库提供的接口来操作虚拟文件系统。 <?php use Vfs \ FileSystem ; use Vfs \ Node \ Directory ; use Vfs \ Node \ File ; // ...
commons-vfs2-filters Apache Commons IO文件过滤器到Commons虚拟文件系统(VFS)的端口 该代码很快将被贡献给VFS代码库:
是我最近学习Linux VFS 虚拟文件系统时收集的,感觉是学习VFS 虚拟文件系统的好资料,特共享给和我相似的朋友们共同学习. 资料主要有三个: 1. 解析 Linux 中的 VFS 文件系统机制.doc 比较好,写出了文件系统的...
Apache Commons VFS是一个虚拟文件系统库。 文献资料 可以在上找到更多信息。 可以浏览 。 与Apache Commons VFS Project的用法有关的问题应张贴到。 在哪里可以获得最新版本? 您可以从我们的下载源代码和二进制...
番石榴 该库提供了以为后端的实用程序方法。 在大多数方法中,签名已从... compile( group : ' net.simon04 ' , name : ' guava-vfs ' , version : ' 1.1.0 ' , ext : ' jar ' ) } 执照 麻省理工学院 作者 西蒙·莱格纳
vfs495:适用于Linux的Validity VFS495(138a:003f)驱动程序和实用程序
linux 的 VFS 文件系统说明
产品特点特征描述默认vfs04 =“ ”互操作拉链放气“ zip / deflate”(解压缩)支持zip-bzip2 “ zip / bzip2”(解压缩)支持(选择参加) 压缩时间创建zip归档文件时使用“ zip / time”写入时间戳不安全代码箱子...
虚拟文件系统(VFS)是由Sun microsystems公司在定义网络文件系统(NFS)时创造的。它是一种用于网络环境的分布式文件系统,是允许和操作系统使用不同的文件系统实现的接口。
适用于Apache Commons VFS的Dropbox插件
\解析 Linux 中的 VFS 文件系统机制 \解析 Linux 中的 VFS 文件系统机制 \解析 Linux 中的 VFS 文件系统机制
VFS文件系统简要介绍,重要数据结构与算法分析。
CMIS 的 Apache Commons VFS 提供程序实现 当前,此实现实际上是测试该想法的原型,但它已经能够: 使用 Atom Pub 绑定连接到 repo.opencmis.org 上的测试存储库 基于基本 URL 的身份验证 访问根文件夹 导航树结构...
自己在操作系统课程设计时做的模拟实现VFS系统,供大家参考。(里面有报告和源代码,标准C++代码可以在Linux...摘要:本文利用虚拟文件系统(VFS)思想,建立一个统一的接口框架。并基于此接口实现了一个简单的文件系统。
apache的vfs源码。版本1.0,支持屏蔽协议的文件操作,包括文件上传,文件删除等。