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);
分享到:
相关推荐
3. **数据备份**:通过VFS2和过滤器,可以选择性地备份特定类型的文件或满足特定条件的文件,提高备份效率。 4. **日志分析**:在处理大量日志文件时,可以只读取最近的或满足特定条件的日志条目,降低资源消耗。 ...
`FileSystemManager`是VFS的核心管理器,它负责创建`FileObject`实例,配置和管理文件系统。开发者可以通过`FileSystemManager`获取到任何类型的`FileObject`,并进行相应的操作。初始化`FileSystemManager`通常需要...
- Kettle提供了对Apache VFS的支持,可以访问多种远程文件系统和协议。 13. 错误处理和转换步骤类型: - 对于常见的错误处理方法有详细描述。 - 转换步骤类型包含了上述提到的众多转换功能,每种类型有其特定的...
- **Apache虚拟文件系统(VFS)支持**:Kettle支持Apache VFS,使得文件操作更加灵活。 - **转换步骤类型**:Kettle提供了多种内置的步骤类型,包括但不限于: - **文本文件输入(TextInput)**:用于读取纯文本...
- **Apache虚拟文件系统(VFS)支持:** 通过 VFS,Kettle 可以访问分布式文件系统中的文件。 - **转换步骤类型:** - **文本文件输入(TextInput):** 从文本文件中读取数据。 - **表输入(Table Input):** 从...
**9.5 Apache虚拟文件系统(VFS)支持** Kettle 支持 Apache VFS,可以轻松处理多种文件系统协议。 **9.6 转换步骤类型** 接下来的部分详细介绍了各种类型的转换步骤,包括但不限于: - **9.6.1 文本文件输入...
**9.5 Apache虚拟文件系统(VFS)支持** Kettle支持Apache VFS,这意味着它可以透明地处理各种文件系统协议,如FTP、SFTP、HTTP等。 **9.6 转换步骤类型** - **9.6.1 文本文件输入(TextInput)**:从文本文件中...
Apache VFS支持使得Kettle能够更加灵活地处理文件系统相关的任务。 ##### 9.6 转换步骤类型 转换步骤类型包括了各种数据源输入、数据处理以及数据输出等。 1. **文本文件输入(TextInput)**:用于从文本文件中...
此外,手册还介绍了Apache虚拟文件系统(VFS)的支持,这使得Kettle能够处理多种不同的文件类型和来源,提供了良好的文件处理能力。 在转换步骤的类型中,Kettle用户手册描述了包括文本文件输入(TextInput)、表...
Kettle 支持 Apache VFS,允许用户访问各种类型的文件系统,包括本地文件系统、FTP、SFTP 等。 **9.6 转换步骤类型** - **9.6.1 文本文件输入 (TextInput)** 用于读取文本文件中的数据。 - **9.6.2 表输入 (Table...
Apache VFS支持使得Kettle能够透明地访问本地文件系统以及网络文件系统。 ##### 9.6 转换步骤类型 #### 9.6.1 文本文件输入(TextInput) 文本文件输入步骤用于读取文本文件中的数据,并将其转换为Kettle内部的...