1 packageio.guangsoft.utils;2
3 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7 importjava.nio.channels.FileChannel;8 importjava.util.ArrayList;9 importjava.util.List;10
11 public classFilesUtil {12
13 //判断文件或文件夹是否存在
14 public static booleanisExit(String fileName) {15 if(StringUtils.isNotEmpty(fileName)) {16 File oldfile = newFile(fileName);17 if(oldfile.exists()) {18 return true;19 }20 }21 return false;22 }23
24 //NIO方式复制文件
25 public static voidcopyFileNIO(File originFile, File destFile) {26 File destDir =destFile.getParentFile();27 if (!destDir.exists()) {28 destDir.mkdirs();29 }30 FileInputStream fi = null;31 FileOutputStream fo = null;32 FileChannel in = null;33 FileChannel out = null;34 try{35 fi = newFileInputStream(originFile);36 fo = newFileOutputStream(destFile);37 in = fi.getChannel();//得到对应的文件通道
38 out = fo.getChannel();//得到对应的文件通道
39 in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道
40 } catch(IOException e) {41 e.printStackTrace();42 } finally{43 try{44 fi.close();45 in.close();46 fo.close();47 out.close();48 } catch(IOException e) {49 e.printStackTrace();50 }51 }52 }53
54 //根据文件路径复制文件
55 public static voidcopyFile(String oldPath, String newPath) {56 try{57 File oldfile = newFile(oldPath);58 if(oldfile.exists()) {59 File destFile = newFile(newPath);60 copyFileNIO(oldfile, destFile);61 }62 } catch(Exception e) {63 System.out.println("复制单个文件操作出错");64 e.printStackTrace();65 }66
67 }68
69 //根据文件路径删除文件
70 public static voiddelFile(String filePathAndName) {71 try{72 String filePath =filePathAndName;73 filePath =filePath.toString();74 File myDelFile = newFile(filePath);75 myDelFile.delete();76 } catch(Exception e) {77 System.out.println("删除文件操作出错");78 e.printStackTrace();79 }80
81 }82
83 //移动文件
84 public static voidmoveFile(String oldPath, String newPath) {85 copyFile(oldPath, newPath);86 delFile(oldPath);87 }88
89 //复制整个文件夹到指定目录
90 public static voidcopy(String src, String des) {91 File file1 = newFile(src);92 String desDir = src.substring(src.lastIndexOf("\\") + 1, src.length());93 File[] fs =file1.listFiles();94 File file2 = new File(des +desDir);95 if (!file2.exists()) {96 file2.mkdirs();97 }98 if (fs != null) {99 for(File f : fs) {100 copyFile(f.getPath(), des + desDir + "\\" + f.getName()); //调用文件拷贝的方法
101 }102 }103 }104
105 //递归删除目录下的所有文件及子目录下所有文件
106 public static booleandeleteDir(File dir) {107 boolean ret = true;108 if(dir.isDirectory()) {109 String[] children =dir.list();110 //递归删除目录中的子目录
111 if (children != null) {112 for (int i = 0; i < children.length; i++) {113 boolean success = deleteDir(newFile(dir, children[i]));114 if (!success) {115 return false;116 }117 }118 }119 }120 //目录此时为空,可以删除
121 try{122 ret =dir.delete();123 if(!ret){124
125 System.out.println("删除失败:"+dir.getName());126 System.gc();//系统进行资源强制回收
127 ret =dir.delete();128 }129 }catch(Exception ex){130 ret = false;131 }finally{132
133 }134 returnret;135 }136
137 //获取文件夹下所有文件路径
138 public static ListgetFilePathList(String dirPath) {139 List filePathlist = new ArrayList();140 File dir = newFile(dirPath);141 File[] files = dir.listFiles(); //该文件目录下文件全部放入数组
142 if (files != null) {143 for (int i = 0; i < files.length; i++) {144 if (files[i].isDirectory()) { //判断是文件还是文件夹
145 getFilePathList(files[i].getAbsolutePath()); //获取文件绝对路径
146 } else{147 String strFileName =files[i].getAbsolutePath();148 filePathlist.add(strFileName);149 }150 }151 }152 returnfilePathlist;153 }154
155 }