Apache VFS提供了一种虚拟文件系统,能够让你通过程序很方便的和位于本地文件系统,FTP文件系统,HTTP文件打交道。
在Apache VFS中核心是
FileObject接口。它代表一个文件,和Java File不同,它具有更多延伸的功能和信息。实现FileObject接口的文件对象有很多:例如AbstractFileObjet抽象类提供了部分FileObject实现。大部分FileObject实现类都继承AbstractFileObject类:
- LocalFile:(很奇怪为什么不是LocalFileObject)
- FtpFileObject
- HttpFileObject
- SftpFileObject
- ZipFileObject
- TarFileObject
- RamFileObject
- UrlFileObject
- DelegateFileObject
- CompressedFileObject
FileObject代表一个文件,能够用来访问文件内容和结构。文件是以层次结构组织的,每个层次组织形成一个文件系统。一个文件系统就像本地操作系统中的文件系统一样,例如Windows文件系统,或者一个Http服务器,或者一个Zip文件包。
文件有两种类型:
目录和
普通文件。普通文件拥有数据或者说内容,而目录不含有内容,只能包含其他文件,普通文件不能包含其他文件。
文件名
FileObject拥有一个FileName对象,将文件名字作为一个独立的对象处理。文件名是不可变的。文件名对象有很多方法:
- getBaseName
- getDepth
- getExtension
- getFriendlyURI
- getParent
- getPath
- getRoot
- 等等
文件内容的读取
注意:和Java File不同的是FileObject拥有一个
FileContent对象,如果想访问文件内容的话,需要使用FileObject.getFileContent()方法,这个方法返回一个FileContent对象。FileContent代表一个文件的内容。
简单的说读取文件内容使用:FileContent.
getInputStream()
写内容使用:FileContent.
getOutputStream()
FileContent内部有一个
final AbstractFileObject的引用。
FileContent的重要方法有:
- close 关闭文件内容使用的所有资源,包括所有打开的文件流。当心!!
- get/set Attribute/Attributes: 不能用目前,除非自己重写,其实调用AbstractFileObject的doGet/SetAttribute方法
- getContentInfo 返回一个ContentInfo对象, ContentInfo对象记录了内容的类型和编码信息
- getInputStream 读文件内容
- getOutputStream 写文件内容
- isOpen 检查看看该文件有没有打开的文件流
- getFile 返回FileObject对象
- get/setLastModifiedTime
文件的操作
基本的文件操作例如创建,删除,重命名,拷贝都可以通过FileObject来完成。
- copyFrom(FileObject src,FileSelector selector) 从其他地方的源文件拷贝到这个文件中,包括源文件的子文件,有一个文件选择器参数和源文件参数
- delete() 删除此文件
- delete(FileSelector selector) 删除符合文件选择器的所有该文件的子文件
- createFile() 如果这个文件不存在,创建它
- createFolder() 如果这个目录不存在,创建它
VFS为了支持高级的操作例如和版本控制工具配合,提供了FileOperation对象,不过VFS根本没有任何实现,如果你想玩,自己玩去吧。
在这里批判一下VFS: VFS的开发有些地方非常不合理,例如FileObject号称支持对文件设置属性,后来发现其AbstractFileObject的getAttributes()方法只返回一个空Map,而setAttribute()更离谱,干脆直接抛出不支持的异常。这个功能非常简单啊,如果你需要的话,自己改一下吧。因此,使用VFS时,千万注意这些陷阱,谁让这是开源软件那
ON YOUR OWN RISK!
分享到:
相关推荐
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 Commons VFS Apache Commons VFS 是一个虚拟文件系统库。文档更多信息可以在上找到。 可以浏览 。 与 Apache Commons VFS 的使用相关的问题应该发布到。我在哪里可以获得最新版本? 您可以从我们的下载源代码...
在Apache VFS中核心是FileObject接口。它代表一个文件,和Java File不同,它具有更多延伸的功能和信息。实现FileObject接口的文件对象有很多:例如AbstractFileObjet抽象类提供了部分FileObject实现。大部分File...
适用于VFS(Apache Commons虚拟文件系统)的Amazon S3驱动程序最新分支4.xx如何将依赖项添加到您的Maven构建中对于具有嵌入式AWS开发工具包的工件(引导的最简单方法) <dependency> <groupId>...对于没有依赖关系的...
Apache Commons VFS项目 Apache Commons VFS是一个虚拟文件系统库。 文献资料 可以在上找到更多信息。 可以浏览 。 与Apache Commons VFS Project的用法有关的问题应张贴到。 在哪里可以获得最新版本? 您可以从...
vfs495:适用于Linux的Validity VFS495(138a:003f)驱动程序和实用程序
番石榴 该库提供了以为后端的实用程序方法。 在大多数方法中,签名已从... compile( group : ' net.simon04 ' , name : ' guava-vfs ' , version : ' 1.1.0 ' , ext : ' jar ' ) } 执照 麻省理工学院 作者 西蒙·莱格纳
适用于Apache Commons VFS的Dropbox插件
Linux VFS的简单介绍,PPT格式,介绍入门介绍入门介绍入门
CMIS 的 Apache Commons VFS 提供程序实现 当前,此实现实际上是测试该想法的原型,但它已经能够: 使用 Atom Pub 绑定连接到 repo.opencmis.org 上的测试存储库 基于基本 URL 的身份验证 访问根文件夹 导航树结构...
离线安装包,亲测可用
apache 的vfs包的javaDoc,提供了API及其说明。
博文链接:https://xzio.iteye.com/blog/159344
VFS(虚拟文件系统) VFS是使用流包装器API构建PHP虚拟文件系统。 流向公开的方式与典型的file://或http://流向PHP的内置函数和关键字(例如fopen和require 。 此实现尝试遵循典型的流,包括触发警告和适当处理边缘...
apache 虚拟文件系统 vfs jar包~~~~
vfs5 本固件是VOX vfs5脚踏开关的软件实现,兼容VT/VT+系列吉他功放。 它在 VT20+ 上进行了测试。 查看 ,了解从原始 VOX 脚踏开关反向设计的模拟电路。 我们在 arduino 的数字引脚 5 上生成一个 PWM,将端口设置为...
** 1号公告**:VFS优于Virus-Clip。 https://sourceforge.net/projects/viralfusionseq/files/VFS.vs.Virus-Clip.pdf/download截至2016年,VFS是NIH HPC系统上唯一可用的病毒集成工具。 ...
jar包,亲测可用
vfs_fonts大全
将来可能会添加备用VFS抽象。 注意事项: 0.4缺少异步接口,因此对浏览器目标无用。 不适合重新进入访问权限。 这会导致Mutex垃圾邮件,并迫使open_file预先复制/读取整个文件。产品特点特征描述默认vfs04 =“ ”互...