|
@@ -1,8 +1,13 @@
|
|
|
package com.fdkankan.common.util;
|
|
|
|
|
|
+import com.fdkankan.common.constant.FileSizeUnitType;
|
|
|
+
|
|
|
import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.text.DecimalFormat;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
public class FileSizeUtil {
|
|
|
|
|
@@ -115,6 +120,42 @@ public class FileSizeUtil {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 文件大小单位转换
|
|
|
+ * @param size 原始大小,单位B
|
|
|
+ * @param unit 需要转换的目标单位 B KB MB GB TB PB
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Integer convert(long size, String unit) throws Exception {
|
|
|
+ FileSizeUnitType fileSizeUnitType = FileSizeUnitType.get(unit);
|
|
|
+ if(Objects.isNull(fileSizeUnitType)){
|
|
|
+ throw new Exception("单位错误!");
|
|
|
+ }
|
|
|
+ if(size == 0){
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(size);
|
|
|
+ long divisor = 1L;
|
|
|
+ switch (fileSizeUnitType){
|
|
|
+ case KB:
|
|
|
+ divisor = 1024L;
|
|
|
+ break;
|
|
|
+ case MB:
|
|
|
+ divisor = 1048576L;
|
|
|
+ break;
|
|
|
+ case GB:
|
|
|
+ divisor = 1073741824L;
|
|
|
+ break;
|
|
|
+ case TB:
|
|
|
+ divisor = 1099511627776L;
|
|
|
+ break;
|
|
|
+ case PB:
|
|
|
+ divisor = 1125899906842624L;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return bigDecimal.divide(new BigDecimal(divisor)).setScale(0, BigDecimal.ROUND_UP).intValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 转换文件大小,指定转换的类型
|
|
|
*/
|
|
|
public static double formetFileSize(long fileS, int sizeType) {
|