一般来说,我们使用Apache VFS时,直接从VFS对象获得的文件管理器是
StandardFileSystemManager,StandardFileSystemManager从DefaultFileSystemManager继承而来。而解析文件在
DefaultFileSystemManager中完成。
绝大部分时候,你会提供一个URI来定位你的文件系统,例如:
ftp://yourftp/rootdir或者http://yourweb/rootdir或者file://c:/rootdir
,然后你将这个字符串作为参数传给StandardFileSystemManger, 这时候DefaultFileSystemManger的
resolveFile方法负责处理URI的解析,并且最终返回一个FileObject文件对象。我们看一下这个方法:
这个方法有5种重载方式,分别接受不同的参数,但核心方法只有一个:
/**
* Resolves a URI, realtive to a base file with specified FileSystem
* configuration
*/
public FileObject resolveFile(final FileObject baseFile, final String uri,
final FileSystemOptions fileSystemOptions)
throws FileSystemException
{
final FileObject realBaseFile;
if (baseFile != null && VFS.isUriStyle()
&& baseFile.getName().getType() == FileType.FILE)
{
realBaseFile = baseFile.getParent();
}
else
{
realBaseFile = baseFile;
}
// TODO: use resolveName and use this name to resolve the fileObject
UriParser.checkUriEncoding(uri);
if (uri == null)
{
throw new IllegalArgumentException();
}
// Extract the scheme
final String scheme = UriParser.extractScheme(uri);
if (scheme != null)
{
// An absolute URI - locate the provider
final FileProvider provider = (FileProvider) providers.get(scheme);
if (provider != null)
{
return provider.findFile(realBaseFile, uri, fileSystemOptions);
}
// Otherwise, assume a local file
}
// Handle absolute file names
if (localFileProvider != null
&& localFileProvider.isAbsoluteLocalName(uri))
{
return localFileProvider.findLocalFile(uri);
}
if (scheme != null)
{
// An unknown scheme - hand it to the default provider
if (defaultProvider == null)
{
throw new FileSystemException("vfs.impl/unknown-scheme.error",
new Object[]
{ scheme, uri });
}
return defaultProvider.findFile(realBaseFile, uri,
fileSystemOptions);
}
// Assume a relative name - use the supplied base file
if (realBaseFile == null)
{
throw new FileSystemException("vfs.impl/find-rel-file.error", uri);
}
return realBaseFile.resolveFile(uri);
}
分享到:
相关推荐
Apache Commons VFS(Virtual File System)是一个开源Java库,它为不同的文件系统提供了一个统一的接口。这个库允许开发者以相同的方式处理各种类型的文件系统,包括本地文件、FTP、HTTP、ZIP、JAR等。VFS是Virtual...
7. **扩展性**:Apache Commons VFS的设计允许添加新的文件系统提供者,开发者可以通过实现相关的接口和类,轻松地扩展其功能以支持新的文件系统类型。 8. **线程安全**:由于VFS可能在多线程环境中使用,因此它的...
4. **URI解析器**:VFS使用URI(统一资源标识符)来表示文件路径,通过URI解析器可以将URI转换为相应的FileObject。 5. **配置和属性**:VFS允许通过配置文件或编程方式设置各种参数,如连接超时、认证信息等。 在...
5. **虚拟文件系统(VFS)**:Apache FtpServer支持虚拟文件系统,允许服务器访问不同类型的存储系统,如本地文件系统、云存储等。VFS抽象了文件操作,提供了一致的接口。 6. **配置管理**:FtpServer可以通过XML...
**解析**:Linux 通过虚拟文件系统(Virtual File System,VFS)支持多种文件系统类型,包括但不限于 FAT、NTFS、ISO9660 和 Ext 系列。**Ext 系列** 是 Linux 最常用的文件系统之一,它包括了 Ext2、Ext3 和 Ext4 ...
### OpenCMS内容管理用户指南知识点解析 #### 一、OpenCMS概述 **1.1 什么是CMS** 内容管理系统(Content Management System, CMS)是一种用于管理网站内容的系统,它允许用户在不需要深入技术知识的情况下更新、...
27. **VFS支持的文件系统**:ext2、ext3、ext4、FAT、NTFS等。 28. **进程状态**:运行、就绪、阻塞,可通过`ps`命令查看。 29. **内核引导文件**:如vmlinuz。 30. **CD-ROM文件系统类型**:ISO 9660。 31. **...
- **Apache虚拟文件系统(VFS)支持**:Kettle支持Apache VFS,使得文件操作更加灵活。 - **转换步骤类型**:Kettle提供了多种内置的步骤类型,包括但不限于: - **文本文件输入(TextInput)**:用于读取纯文本...
#### 问题7:服务器管理 使用自动化工具如Ansible、Puppet进行批量部署和管理。 #### 问题8:团队管理 建立明确的目标,划分职责,鼓励沟通协作,定期培训提升技能。 #### 问题9:Linux系统优化 - 使用top命令...
5. `commons-vfs-2.0.jar`:Apache Commons VFS(Virtual File System),提供了一种抽象层来访问不同的文件系统,包括FTP和FTPS,使得代码可以独立于具体的文件系统进行操作。 6. `commons-httpclient-3.1.jar`:...
- **Apache虚拟文件系统(VFS)支持:** 通过 VFS,Kettle 可以访问分布式文件系统中的文件。 - **转换步骤类型:** - **文本文件输入(TextInput):** 从文本文件中读取数据。 - **表输入(Table Input):** 从...
OpenCms的核心组件包括Content Manager(内容管理器)、VFS(虚拟文件系统)和Alkacon OCEE(OpenCms企业增强版),这些组件在内容管理、文件存储和企业级功能扩展方面发挥着重要作用。 接着,书中的章节将引导读者...
commons-validator 提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则 commons-vfs 虚拟文件系统 httpcomponents-client 和 http 协议客户端一起协作的框架 httpcomponents-core ...
**9.5 Apache虚拟文件系统(VFS)支持** Kettle 支持 Apache VFS,可以轻松处理多种文件系统协议。 **9.6 转换步骤类型** 接下来的部分详细介绍了各种类型的转换步骤,包括但不限于: - **9.6.1 文本文件输入...
commons-validator 提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则 commons-vfs 虚拟文件系统 httpcomponents-client 和 http 协议客户端一起协作的框架 httpcomponents-core ...
**9.5 Apache虚拟文件系统(VFS)支持** Kettle支持Apache VFS,这意味着它可以透明地处理各种文件系统协议,如FTP、SFTP、HTTP等。 **9.6 转换步骤类型** - **9.6.1 文本文件输入(TextInput)**:从文本文件中...
在实际应用中,APR-VFS可以用于各种场景,例如,开发一个能够处理多种归档格式的文件管理工具,或者在Web服务器中实现动态压缩和解压缩功能,以提高网络传输效率。此外,对于需要频繁处理归档文件的系统,如备份和...
##### 9.5 Apache虚拟文件系统(VFS)支持 Kettle支持Apache VFS,这使得它可以处理各种类型的文件系统,包括FTP、SFTP、WebDAV等。 ##### 9.6 转换步骤类型 Kettle提供了丰富的转换步骤类型,涵盖了从数据读取到...