Files
c-api/src/main/java/com/mini/capi/utils/vF.java

42 lines
1.1 KiB
Java
Raw Normal View History

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