您的位置:首页 > 编程语言 > Java开发

java文件整理(二)----对文件工具类(复制,删除,移动)

2010-11-25 16:08 519 查看
package com.tw.file.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.StringWriter;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.NotFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;

import com.tw.str.util.StringToolkit;

//import org.apache.commons.io.filefilter.*;
/**
* 对文件操作的工具类(复制,删除,移动) 需引入包commons-io-1.2.jar
*
* @author tw 2009-07-16
*
*/
public final class FileToolkit {

public static void main(String[] args) {
//待测方法.....
}

/**
* 复制文件或者目录,复制前后文件完全一样。
*
* @author tw 2009-07-16
* @param resFilePath
*            源文件路径
* @param distFolder
*            目标文件夹
* @IOException 当操作发生异常时抛出
*/
public static void copyFile(String resFilePath, String distFolder)
throws IOException {
File resFile = new File(resFilePath);
File distFile = new File(distFolder);
if (resFile.isDirectory()) { // 目录时
FileUtils.copyDirectoryToDirectory(resFile, distFile);
} else if (resFile.isFile()) { // 文件时
// FileUtils.copyFileToDirectory(resFile, distFile, true);
FileUtils.copyFileToDirectory(resFile, distFile);
}
}

/**
* 删除一个文件或者目录
*
* @author tw 2009-07-16
* @param targetPath
*            文件或者目录路径
* @IOException 当操作发生异常时抛出
*/
public static void deleteFile(String targetPath) throws IOException {
File targetFile = new File(targetPath);
if (targetFile.isDirectory()) {
FileUtils.deleteDirectory(targetFile);
} else if (targetFile.isFile()) {
targetFile.delete();
}
}

/**
* 移动文件或者目录,移动前后文件完全一样,如果目标文件夹不存在则创建。
*
* @param resFilePath
*            源文件路径
* @param distFolder
*            目标文件夹
* @IOException 当操作发生异常时抛出
*/
public static void moveFile(String resFilePath, String distFolder)
throws IOException {
File resFile = new File(resFilePath);
File distFile = new File(distFolder);
if (resFile.isDirectory()) {
// FileUtils.moveDirectoryToDirectory(resFile, distFile);
} else if (resFile.isFile()) {
// FileUtils.moveFileToDirectory(resFile, distFile, true);
}
}

/**
* 重命名文件或文件夹
*
* @param resFilePath
*            源文件路径
* @param newFileName
*            重命名
* @return 操作成功标识
*/
public static boolean renameFile(String resFilePath, String newFileName) {
// 格式化路径
String newFilePath = StringToolkit.formatPath(StringToolkit
.getParentPath(resFilePath)
+ "/" + newFileName);
File resFile = new File(resFilePath);
File newFile = new File(newFilePath);
return resFile.renameTo(newFile);
}

/**
* 读取文件或者目录的大小
*
* @param distFilePath
*            目标文件或者文件夹
* @return 文件或者目录的大小,如果获取失败,则返回-1
*/
public static long genFileSize(String distFilePath) {
File distFile = new File(distFilePath);
if (distFile.isFile()) {
return distFile.length();
} else if (distFile.isDirectory()) {
return FileUtils.sizeOfDirectory(distFile);
}
return -1L;
}

/**
* 判断一个文件是否存在
*
* @param filePath
*            文件路径
* @return 存在返回true,否则返回false
*/
public static boolean isExist(String filePath) {
return new File(filePath).exists();
}

/**
* 本地某个目录下的文件列表(不递归)
*
* @param folder
*            ftp上的某个目录
* @param suffix
*            文件的后缀名(比如.mov.xml)
* @return 文件名称列表
*/
public static String[] listFilebySuffix(String folder, String suffix) {
IOFileFilter fileFilter1 = new SuffixFileFilter(suffix);
IOFileFilter fileFilter2 = new NotFileFilter(
DirectoryFileFilter.INSTANCE);
FilenameFilter filenameFilter = new AndFileFilter(fileFilter1,
fileFilter2);
return new File(folder).list(filenameFilter);
}

/**
* 将字符串写入指定文件(当指定的父路径中文件夹不存在时,会最大限度去创建,以保证保存成功!)
*
* @param res
*            原字符串
* @param filePath
*            文件路径
* @return 成功标记
*/
public static boolean string2File(String res, String filePath) {
boolean flag = true;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
File distFile = new File(filePath);
if (!distFile.getParentFile().exists()) {// 不存在时创建
distFile.getParentFile().mkdirs();
}
bufferedReader = new BufferedReader(new StringReader(res));
bufferedWriter = new BufferedWriter(new FileWriter(distFile));
char buf[] = new char[1024]; // 字符缓冲区
int len;
while ((len = bufferedReader.read(buf)) != -1) {
bufferedWriter.write(buf, 0, len);
}
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
return flag;
}

/**
* 文本文件转换为指定编码的字符串
*
* @param file
*            文本文件
* @param encoding
*            编码类型 没有编码方式,传入NULL既可,将使用默认的编码方式
* @return 转换后的字符串
* @throws IOException
*/
public static String file2String(File file, String encoding) {
InputStreamReader reader = null;
StringWriter writer = new StringWriter();
try {
if (encoding == null || "".equals(encoding.trim())) {
reader = new InputStreamReader(new FileInputStream(file),
encoding);
} else {
reader = new InputStreamReader(new FileInputStream(file));
}
// 将输入流写入输出流
char[] buffer = new char[1024*1024];
int n = 0;
while (-1 != (n = reader.read(buffer))) {
writer.write(buffer, 0, n);
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 返回转换结果
if (writer != null)
return writer.toString();
else
return null;
}

}


本文出自 “技术成就梦想” 博客,请务必保留此出处http://wen5566.blog.51cto.com/1040211/432293
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐