FileUtil.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package com.lsw.commons.utils;
  2. import com.jfinal.core.JFinal;
  3. import java.io.File;
  4. import java.math.BigDecimal;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. /**
  8. * @author 李书文
  9. * @description 文件操作工具类
  10. * @time 2016年8月14日
  11. */
  12. public class FileUtil {
  13. /**
  14. * 文件/目录 重命名
  15. *
  16. * @param oldPath 原有路径(绝对路径)
  17. * @param newPath 更新路径
  18. */
  19. public static boolean renameFile(String oldPath, String newPath) {
  20. boolean success = false;
  21. File oldFile = new File(oldPath);// 文件或目录
  22. File newFile = new File(newPath);// 文件或目录
  23. try {
  24. success = oldFile.renameTo(newFile);// 重命名
  25. if (!success) {
  26. System.out.println("重命名失败");
  27. } else {
  28. System.out.println("重命名成功");
  29. }
  30. } catch (RuntimeException e) {
  31. e.printStackTrace();
  32. }
  33. return success;
  34. }
  35. /**
  36. * 删除单个文件
  37. *
  38. * @param Path 被删除文件的文件名
  39. * @return 单个文件删除成功返回true,否则返回false
  40. */
  41. public static boolean deleteFile(String Path) {
  42. boolean flag = false;
  43. File file = new File(Path);
  44. // 路径为文件且不为空则进行删除
  45. if (file.isFile() && file.exists()) {
  46. file.delete();
  47. flag = true;
  48. }
  49. return flag;
  50. }
  51. /**
  52. * 删除目录(文件夹)以及目录下的文件
  53. *
  54. * @param sPath 被删除目录的文件路径
  55. * @return 目录删除成功返回true,否则返回false
  56. */
  57. public static boolean deleteDirectory(String sPath) {
  58. boolean flag = false;
  59. // 如果sPath不以文件分隔符结尾,自动添加文件分隔符
  60. if (!sPath.endsWith(File.separator)) {
  61. sPath = sPath + File.separator;
  62. }
  63. File dirFile = new File(sPath);
  64. // 如果dir对应的文件不存在,或者不是一个目录,则退出
  65. if (!dirFile.exists() || !dirFile.isDirectory()) {
  66. return false;
  67. }
  68. flag = true;
  69. // 删除文件夹下的所有文件(包括子目录)
  70. File[] files = dirFile.listFiles();
  71. for (int i = 0; i < files.length; i++) {
  72. // 删除子文件
  73. if (files[i].isFile()) {
  74. flag = deleteFile(files[i].getAbsolutePath());
  75. if (!flag)
  76. break;
  77. } // 删除子目录
  78. else {
  79. flag = deleteDirectory(files[i].getAbsolutePath());
  80. if (!flag)
  81. break;
  82. }
  83. }
  84. if (!flag)
  85. return false;
  86. // 删除当前目录
  87. if (dirFile.delete()) {
  88. return true;
  89. } else {
  90. return false;
  91. }
  92. }
  93. /**
  94. * 读取某个文件夹下的所有文件
  95. *
  96. * @param filepath 路径
  97. * @return
  98. */
  99. public static List<FileEntity> readfile(String filepath) {
  100. List<FileEntity> list = new ArrayList<FileEntity>();
  101. try {
  102. File file = new File(filepath);
  103. if (!file.isDirectory()) {
  104. System.out.println("文件");
  105. list.add(new FileEntity(file.getPath(), file.getName()));
  106. } else if (file.isDirectory()) {
  107. System.out.println("文件夹");
  108. String[] filelist = file.list();
  109. for (int i = 0; i < filelist.length; i++) {
  110. File readfile = new File(filepath + "\\" + filelist[i]);
  111. if (!readfile.isDirectory()) {
  112. list.add(new FileEntity(readfile.getPath(), readfile.getName()));
  113. } else if (readfile.isDirectory()) {
  114. readfile(filepath + "\\" + filelist[i]);
  115. }
  116. }
  117. }
  118. } catch (Exception e) {
  119. System.out.println("readfile() Exception:" + e.getMessage());
  120. }
  121. return list;
  122. }
  123. public static String getPrintSize(long size) {
  124. // 如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义
  125. double value = (double) size;
  126. if (value < 1024) {
  127. return String.valueOf(value) + "B";
  128. } else {
  129. value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
  130. }
  131. // 如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位
  132. // 因为还没有到达要使用另一个单位的时候
  133. // 接下去以此类推
  134. if (value < 1024) {
  135. return String.valueOf(value) + "KB";
  136. } else {
  137. value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
  138. }
  139. if (value < 1024) {
  140. return String.valueOf(value) + "MB";
  141. } else {
  142. // 否则如果要以GB为单位的,先除于1024再作同样的处理
  143. value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
  144. return String.valueOf(value) + "GB";
  145. }
  146. }
  147. public static void main(String[] args) {
  148. boolean a= deleteFile("E:\\idea\\work2\\frcz_service\\src\\main\\webapp\\upload\\file\\网赚数据结构1.doc");
  149. System.out.println(a);
  150. }
  151. }