理解Apache VFS的概念性接口很重要,因为Apache VFS例子太少,如果不仔细研究的话,根本农不清楚:
VfsComponent接口
这个接口号称是用来管理所有VFS组件的生命周期的。方法比较简单:
这个接口允许VFS组件访问他们需要的服务,例如
FileReplicator接口
这个接口的任务是创建文件的本地复制品。只有一个方法 replicateFile(FileObject src, FileSelector sel), 返回一个File对象。有两个类实现这个接口:
这个接口负责管理本地临时文件仓库,只有一个实现类,就是DefaultFileReplicator类。方法只有一个allocateFile(String basename) 接受一个字符串,返回一个File对象。这个方法将分配一个临时文件,当这个仓库关闭时,临时文件以及所有子文件被删除。
FileProvider接口
每个FileProvider文件提供器负责处理特殊类型的URI模式,例如Ftp, Http等都有自己的文件提供器
VfsComponent接口
这个接口号称是用来管理所有VFS组件的生命周期的。方法比较简单:
- init 用来初始化组件
- close 用来关闭组件
- setContext(VfsComponentContext ctx) 设置组件上下文,注意它维护了一个组件上下文:VfsComponentContext
- setLogger 设置日志
- AbstractFilesCache
- AbstractFileSystem
- AbstractVfsContainer
- DefaultFileReplicator
这个接口允许VFS组件访问他们需要的服务,例如
FileReplicator接口
这个接口的任务是创建文件的本地复制品。只有一个方法 replicateFile(FileObject src, FileSelector sel), 返回一个File对象。有两个类实现这个接口:
- DefaultFileReplicator 一个简单的文件复制器和临时文件仓库,同时实现了FileReplicator接口,TemporaryFileStore接口和VfsComponent接口
- PriviledgedFileReplicator 一个文件复制器的包装类,接受一个文件复制器作为参数。这个包装类能够执行某些需要权限的动作
这个接口负责管理本地临时文件仓库,只有一个实现类,就是DefaultFileReplicator类。方法只有一个allocateFile(String basename) 接受一个字符串,返回一个File对象。这个方法将分配一个临时文件,当这个仓库关闭时,临时文件以及所有子文件被删除。
FileProvider接口
每个FileProvider文件提供器负责处理特殊类型的URI模式,例如Ftp, Http等都有自己的文件提供器