Apache commons VFS 文件操作 源代码示例

通过VFS对文件进行一些操作,包括写入、读取文件,判断文件是否可读可写等示例。Apache commons VFS包和apache commons的其他基础性类有非常密切的关系。

整理了一些常用的方法,源代码如下:

package test.ffm83.commons.VFS;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.text.SimpleDateFormat;

import org.apache.commons.io.IOUtils;

import org.apache.commons.lang.StringUtils;

import org.apache.commons.vfs2.FileObject;

import org.apache.commons.vfs2.FileSystemException;

import org.apache.commons.vfs2.FileSystemManager;

import org.apache.commons.vfs2.FileType;

import org.apache.commons.vfs2.VFS;

/**

* 通过VFS对文件进行一些操作,包括写入、读取文件,判断文件是否可读可写等使用2.0版本实现

*

* @author范芳铭

*/

public
class
VFSUtils {

private
static
FileSystemManager fsManager =
null;

// 静态处理块

static {

try {

fsManager = VFS.getManager();

}catch(FileSystemException e) {

e.printStackTrace();

}

}

/**

* <读取文件内容>

*/

public
static
StringreadFileToString(String filePath, String encoding)

throws IOException {

if (StringUtils.isEmpty(filePath)){

throw
new
IOException("File ‘"+ filePath +
"‘ is empty.");

}

FileObjectfileObj = null;

InputStreamin = null;

try {

fileObj= fsManager.resolveFile(filePath);

if (fileObj.exists()) {

if (FileType.FOLDER.equals(fileObj.getType())){

throw
new
IOException("File ‘"+ filePath

+"‘ exists but is a directory");

}else{

in= fileObj.getContent().getInputStream();

return IOUtils.toString(in,encoding);

// 返回List<String>,通过 IOUtils.readLines(in, encoding)的形式;

// 返回byte[],通过IOUtils.toByteArray(in)的形式;

}

}else{

throw
new
FileNotFoundException("File ‘"+ filePath

+"‘ does not exist");

}

}catch(FileSystemException e) {

throw
new
IOException("File ‘"+ filePath +
"‘ resolveFile fail.");

}finally{

IOUtils.closeQuietly(in);

if (fileObj !=
null) {

fileObj.close();

}

}

}

/**

* <将内容写入文件中,如果文件不存在,那么创建。>
<功能详细描述>

*/

public
static void
writeStringToFile(String filePath, String data,

Stringencoding) throwsIOException {

if (StringUtils.isEmpty(filePath)){

throw
new
IOException("File ‘"+ filePath +
"‘ is empty.");

}

FileObjectfileObj = null;

OutputStreamout = null;

try {

fileObj= fsManager.resolveFile(filePath);

if (!fileObj.exists()) {

fileObj.createFile();

}else{

if (FileType.FOLDER.equals(fileObj.getType())){

throw
new
IOException("Write fail. File ‘"+ filePath

+"‘ exists but is a directory");

}

}

// 处理文件不可写的异常

if(!fileObj.isWriteable()) {

throw
new
IOException("Write fail. File ‘"+ filePath

+"‘ exists but isWriteable is false.");

}

out= fileObj.getContent().getOutputStream();

// commons io里的方法

IOUtils.write(data,out, encoding);

}catch(FileSystemException e) {

throw
new
IOException("File ‘"+ filePath +
"‘ resolveFile fail.");

}finally{

IOUtils.closeQuietly(out);

if (fileObj !=
null) {

fileObj.close();

}

}

}

/**

* <修改文件的最后修改时间,将文件做旧。>
<功能详细描述>

*/

public
static void
_changeLastModificationTime(String filePath,

StringlastTime) throwsException {

if (StringUtils.isEmpty(filePath)|| StringUtils.isEmpty(lastTime)) {

throw
new
IOException("File ‘"+ filePath +
" or "+ lastTime

+"‘ is empty.");

}

SimpleDateFormatsdf = newSimpleDateFormat("yyyy/MM/dd HH:mm:ss");

long lastModifyTime =sdf.parse(lastTime).getTime();

FileObjectfileObj = null;

try {

fileObj= fsManager.resolveFile(filePath);

fileObj.getContent().setLastModifiedTime(lastModifyTime);

}catch(Exception e) {

e.printStackTrace();

}

}

public
static void
main(String[] args)
throws Exception {

Stringfile_encode = "D:\\ffm83\\ffm_encode.txt";

Stringdata = "范芳铭在做Apache commons VFS简介的测试,关于ffm等";

// write

writeStringToFile(file_encode,data,
"utf-8");

System.out.println(StringUtils.center("write file "+ file_encode, 50,

"-"));

// read

System.out.println(StringUtils.center("read file "+ file_encode, 50,

"-"));

StringreadStr = readFileToString(file_encode,
"utf-8");

System.out.println("读取的内容为:" + readStr);

System.out.println(file_encode +
",可读?"

+fsManager.resolveFile(file_encode).isReadable());

System.out.println(file_encode +
",可写?"

+fsManager.resolveFile(file_encode).isWriteable());

//修改文件的最后的修改时间

_changeLastModificationTime(file_encode,"2012/1/1 12:12:12");

System.out.println(StringUtils.center("edit lastModifyTime: "+ file_encode, 50,

"-"));

}

}

运行结果如下:

--------write fileD:\ffm83\ffm_encode.txt--------

--------read file D:\ffm83\ffm_encode.txt---------

读取的内容为:范芳铭在做Apachecommons VFS简介的测试,关于ffm等

D:\ffm83\ffm_encode.txt,可读?true

D:\ffm83\ffm_encode.txt,可写?true

---edit lastModifyTime: D:\ffm83\ffm_encode.txt---

打开文件一看,文件的修改时间如期变成了2012年。

时间: 2024-10-25 22:33:22

Apache commons VFS 文件操作 源代码示例的相关文章

Apache commons VFS之Shell源代码示例

这个示例主要是模拟一个Shell程序,通过输入一些命令,执行操作.源代码来自官网. 这个示例的特点: 1.       接收用户的输入: 2.       通过字符解析和判断: 3.       利用VFS自带的一些功能进行功能实现: package test.ffm83.commons.VFS; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import

Apache commons VFS简介和ShowProperties源代码示例

Apache commons VFS又叫做 Apache Commons Virtual FileSystem.是一组功能强大的对各类资源的访问接口,目前这个JAR包得到了全新的重构,目前最新的版本是2.2. 如果我们在平常的工作中,需要得到一些不同格式文件的信息,比如文件大小.所在路径.文件最后更改时间等,或者我们需要对文件进行一些常规的操作,比如删除文件,拷贝文件等等,那么Apache Commons中的VFS(Virtual File System)就是我们可以考虑的一个开源系统. 据VF

Spring 中Apache Commons上传文件

在用Apache Commons完成文件上传功能需有的几步: 1.导入两个架包:commons-fileupload.jar和commons-io.jar maven中: 1 <dependency> 2 <groupId>commons-fileupload</groupId> 3 <artifactId>commons-fileupload</artifactId> 4 <version>1.3</version> 5

Maven+Spring Batch+Apache Commons VF学习

Apache Commons VFS资料:例子:http://www.zihou.me/html/2011/04/12/3377.html详细例子:http://p7engqingyang.iteye.com/blog/1702429 Apache Commons VFS:文件系统工具,对不来自与不同的文件系统的文件进行操作,可以处理非本地文件(vfs中,原来存在ftp有时候不能正常关闭的情况,commons-vfs2 出了以后,该问题已经得到解决 )VFS为访问各种不同的文件系统提供了单一的应

The import org.apache.commons.fileupload cannot be resolved

1.右键项目--Build Path--Add External Archives 2.选中需要引入的jar包(注意哦,不是zip文件) 3.确认添加外部文档 4.web App Libraries显示加载成功,即可引入 org.apache.commons.fileUpload文件

Java 文件上传组件 Apache Commons FileUpload 应用指南(转)

在最初的 http 协议中,没有上传文件方面的功能.RFC1867("Form-based File Upload in HTML".)为 http 协议添加了这个功能.客户端的浏览器,如 Microsoft IE, Mozila, Opera 等,按照此规范将用户指定的文件发送到服务器.服务器端的网页程序,如 php, asp, jsp 等,可以按照此规范,解析出用户发送来的文件. 2.1客户端 简单来说,RFC1867规范要求http协议增加了file类型的input标签,用于浏览

Java 利用Apache Commons Net 实现 FTP文件上传下载

package woxingwosu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Comparator;

文件上传之Apache commons fileupload使用

文件上传的方法主要目前有两个常用的,一个是SmartUpload,一个是Apache的Commons fileupload. 我们这里主要介绍下第二个的用法,首先要上传文件,注意几个问题: 1 form表单内,要添加空间<input type="file" name="myfile"> 2 form表单的内容格式要定义成multipart/form-data格式 3 需要类库:1 commons-io.jar 2commons-fileupload-1.

apache commons csv写文件demo

1.简介 csv处理开源的工具有不少,比如:super csv 和 Apache commons csv,本文使用Apache Commons csv,其提供了非常简单的接口来读写csv文件. 本文是针对csv文件的写示例. 2.依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <version>1.1&