java truevfs_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 classVFSUtils {

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,通过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 voidwriteStringToFile(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年。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值