package com.lsw.commons.utils; import com.jfinal.core.JFinal; import java.io.File; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; /** * @author 李书文 * @description 文件操作工具类 * @time 2016年8月14日 */ public class FileUtil { /** * 文件/目录 重命名 * * @param oldPath 原有路径(绝对路径) * @param newPath 更新路径 */ public static boolean renameFile(String oldPath, String newPath) { boolean success = false; File oldFile = new File(oldPath);// 文件或目录 File newFile = new File(newPath);// 文件或目录 try { success = oldFile.renameTo(newFile);// 重命名 if (!success) { System.out.println("重命名失败"); } else { System.out.println("重命名成功"); } } catch (RuntimeException e) { e.printStackTrace(); } return success; } /** * 删除单个文件 * * @param Path 被删除文件的文件名 * @return 单个文件删除成功返回true,否则返回false */ public static boolean deleteFile(String Path) { boolean flag = false; File file = new File(Path); // 路径为文件且不为空则进行删除 if (file.isFile() && file.exists()) { file.delete(); flag = true; } return flag; } /** * 删除目录(文件夹)以及目录下的文件 * * @param sPath 被删除目录的文件路径 * @return 目录删除成功返回true,否则返回false */ public static boolean deleteDirectory(String sPath) { boolean flag = false; // 如果sPath不以文件分隔符结尾,自动添加文件分隔符 if (!sPath.endsWith(File.separator)) { sPath = sPath + File.separator; } File dirFile = new File(sPath); // 如果dir对应的文件不存在,或者不是一个目录,则退出 if (!dirFile.exists() || !dirFile.isDirectory()) { return false; } flag = true; // 删除文件夹下的所有文件(包括子目录) File[] files = dirFile.listFiles(); for (int i = 0; i < files.length; i++) { // 删除子文件 if (files[i].isFile()) { flag = deleteFile(files[i].getAbsolutePath()); if (!flag) break; } // 删除子目录 else { flag = deleteDirectory(files[i].getAbsolutePath()); if (!flag) break; } } if (!flag) return false; // 删除当前目录 if (dirFile.delete()) { return true; } else { return false; } } /** * 读取某个文件夹下的所有文件 * * @param filepath 路径 * @return */ public static List readfile(String filepath) { List list = new ArrayList(); try { File file = new File(filepath); if (!file.isDirectory()) { System.out.println("文件"); list.add(new FileEntity(file.getPath(), file.getName())); } else if (file.isDirectory()) { System.out.println("文件夹"); String[] filelist = file.list(); for (int i = 0; i < filelist.length; i++) { File readfile = new File(filepath + "\\" + filelist[i]); if (!readfile.isDirectory()) { list.add(new FileEntity(readfile.getPath(), readfile.getName())); } else if (readfile.isDirectory()) { readfile(filepath + "\\" + filelist[i]); } } } } catch (Exception e) { System.out.println("readfile() Exception:" + e.getMessage()); } return list; } public static String getPrintSize(long size) { // 如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义 double value = (double) size; if (value < 1024) { return String.valueOf(value) + "B"; } else { value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue(); } // 如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位 // 因为还没有到达要使用另一个单位的时候 // 接下去以此类推 if (value < 1024) { return String.valueOf(value) + "KB"; } else { value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue(); } if (value < 1024) { return String.valueOf(value) + "MB"; } else { // 否则如果要以GB为单位的,先除于1024再作同样的处理 value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue(); return String.valueOf(value) + "GB"; } } public static void main(String[] args) { boolean a= deleteFile("E:\\idea\\work2\\frcz_service\\src\\main\\webapp\\upload\\file\\网赚数据结构1.doc"); System.out.println(a); } }