42 lines
1.1 KiB
Java
42 lines
1.1 KiB
Java
package com.mini.capi.utils;
|
||
|
||
|
||
import org.springframework.web.multipart.MultipartFile;
|
||
|
||
import java.io.File;
|
||
import java.io.FileInputStream;
|
||
import java.io.IOException;
|
||
import java.io.InputStream;
|
||
import java.math.BigDecimal;
|
||
import java.math.RoundingMode;
|
||
import java.nio.file.Files;
|
||
|
||
|
||
public class vF {
|
||
|
||
|
||
// 注意:起点是 KB,所以后面依次是 M、G、T、P
|
||
private static final String[] UNITS = {"K", "M", "G", "T", "P"};
|
||
private static final BigDecimal UNIT = BigDecimal.valueOf(1024L);
|
||
|
||
public static String format(long kBytes) {
|
||
if (kBytes < 0) {
|
||
throw new IllegalArgumentException("KB 数不能为负数");
|
||
}
|
||
|
||
BigDecimal size = BigDecimal.valueOf(kBytes);
|
||
int unitIndex = 0;
|
||
|
||
while (size.compareTo(UNIT) >= 0 && unitIndex < UNITS.length - 1) {
|
||
size = size.divide(UNIT, 2, RoundingMode.HALF_UP);
|
||
unitIndex++;
|
||
}
|
||
|
||
// 去掉无意义的 0 和小数点
|
||
String num = size.stripTrailingZeros().toPlainString();
|
||
return num + UNITS[unitIndex];
|
||
}
|
||
|
||
|
||
}
|