小编典典

用Java / JSTL格式化文件大小

jsp

我想知道是否有人知道格式化Java / JSP / JSTL页面中文件大小的好方法。

是否有一个util类可以做到这一点?
我已经搜索过公地,但一无所获。任何自定义标签?
为此已经存在一个库吗?

理想情况下,我希望它的行为类似于Unix的 ls* 命令上的 -h 开关 *

34- > 34795-

795
2646- > 2.6K 2705-
2.7K 4096-
4.0K
13588-> 14K
28282471-> 27M
28533748-> 28M


阅读 343

收藏
2020-06-08

共1个答案

小编典典

快速谷歌搜索返回我这个从Appache
Hadoop项目。从那里复制:(Apache许可证,版本2.0):

private static DecimalFormat oneDecimal = new DecimalFormat("0.0");

  /**
   * Given an integer, return a string that is in an approximate, but human 
   * readable format. 
   * It uses the bases 'k', 'm', and 'g' for 1024, 1024**2, and 1024**3.
   * @param number the number to format
   * @return a human readable form of the integer
   */
  public static String humanReadableInt(long number) {
    long absNumber = Math.abs(number);
    double result = number;
    String suffix = "";
    if (absNumber < 1024) {
      // nothing
    } else if (absNumber < 1024 * 1024) {
      result = number / 1024.0;
      suffix = "k";
    } else if (absNumber < 1024 * 1024 * 1024) {
      result = number / (1024.0 * 1024);
      suffix = "m";
    } else {
      result = number / (1024.0 * 1024 * 1024);
      suffix = "g";
    }
    return oneDecimal.format(result) + suffix;
  }

它使用1K = 1024,但是您可以根据需要进行调整。您还需要使用其他DecimalFormat处理<1024情况。

2020-06-08