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

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; } }

转载于:https://www.cnblogs.com/tw5566/archive/2010/11/25/2247876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值