一般来说,我们使用Apache VFS时,直接从VFS对象获得的文件管理器是StandardFileSystemManager,StandardFileSystemManager从DefaultFileSystemManager继承而来。而解析文件在DefaultFileSystemManager中完成。
绝大部分时候,你会提供一个URI来定位你的文件系统,例如:ftp://yourftp/rootdir或者http://yourweb/rootdir或者file://c:/rootdir
,然后你将这个字符串作为参数传给StandardFileSystemManger, 这时候Defau ...
理解Apache VFS的概念性接口很重要,因为Apache VFS例子太少,如果不仔细研究的话,根本农不清楚:
VfsComponent接口
这个接口号称是用来管理所有VFS组件的生命周期的。方法比较简单:
init 用来初始化组件
close 用来关闭组件
setContext(VfsComponentContext ctx) 设置组件上下文,注意它维护了一个组件上下文:VfsComponentContext
setLogger 设置日志
有一个抽象类实现了这个接口AbstractVfsComponent抽象类,这个抽象类加了一个 ...
使用Apache VFS比较简单,第一个面对的对象是org.apache.commons.vfs.VFS对象。它有三个静态的方法:
getManager 这个方法最重要,将返回一个默认的FileSystemManager接口
setUriStyle
isUriStyle 判断是否是URI形式
FileSystemManager接口,文件系统管理器接口
文件系统管理器负责一系列文件系统,通过文件系统使用名字来定位一个文件对象,定位方法是resolveFile()方法
文件系统管理器可以识别多种类型的文件名:
绝对的URI: 必 ...
Apache VFS的事件只有文件改变事件,这个事件模型比较特别:
org.apache.commons.vfs.FileChangeEvent类是顶层,也是具体类,只有一个方法:getFile(),返回触发事件的文件对象。
org.apache.commons.vfs.events.AbstractFileChangeEvent抽象类继承了上述的FileChangeEvent具体类,增加了一个抽象方法:notify(FileListener listener)来通知监听器
我们真正使用的有三个继承上述抽象类的具体类:
ChangedEvent
Cre ...
Apache VFS提供了FileFilter接口和FileSelector接口以及FileSelectInfo接口。这三个接口很容易让人摸不着头脑,都声称是
遍历文件层次结构中用来选择文件的。只不过FileFilter说是直接的子文件 (direct children of the base)
FileSelectInfo
只有三个方法:
getBaseFolder 返回遍历的根目录
getDepth 返回文件相对根目录(Base Folder)的深度
getFile 返回考虑的文件对象
FileFilter
F ...
Apache VFS有文件监听和监控功能。
FileListener接口监听三种事件:
fileChanged(FileChangeEvent eve): 文件变化,只有使用了FileMonitor才触发
fileCreated(FileChangeEvent eve): 文件创建
fileDeleted(FileChangeEvent eve): 文件删除
FileChangeEvent很简单,只有一个方法getFile(),返回触发事件的FileObject对象。
Apache VFS提供了一种虚拟文件系统,能够让你通过程序很方便的和位于本地文件系统,FTP文件系统,HTTP文件打交道。
在Apache VFS中核心是FileObject接口。它代表一个文件,和Java File不同,它具有更多延伸的功能和信息。实现FileObject接口的文件对象有很多:例如AbstractFileObjet抽象类提供了部分FileObject实现。大部分FileObject实现类都继承AbstractFileObject类:
LocalFile:(很奇怪为什么不是LocalFileObject)
FtpFileObject
Htt ...
- 浏览: 54126 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
JSF中的事件类型
阶段事件没有弄明白,值改变事件和动作事件都用过
-- by lysmart_8 -
Roller分析(2): 商业逻辑
roller 不是开源的吗?怎么会还有商业的逻辑呢?
-- by bhlove -
转贴:Nutch爬虫工作流程及 ...
不错啊~~
-- by savage100 -
Jackrabbit的简单节点定义 ...
写得很清晰,很不错! 我想问一下,如果可以实现动态注册,那么用户在使用定义的新节 ...
-- by java9920 -
Apache Solr 剖析系列(1 ...
支持 支持 继续分析啊
-- by zhaoyongling721






评论排行榜