java - 在 Java/JSTL 中格式化文件大小

标签 java jsp formatting jstl

<分区>

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

是否有一个 util 类可以做到这一点?
我搜索了下议院,但一无所获。有自定义标签吗?
是否已经存在用于此的库?

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

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

最佳答案

快速谷歌搜索返回我 this来自 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 情况。

关于java - 在 Java/JSTL 中格式化文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/801935/

相关文章:

java - 如何使用 Java 1.6 Annotation Processing 执行编译时织入?

java - 使用 spring BeanUtils 复制特定属性

java - 无法在 Intellij IDEA 中解析带有 uri 的 taglib

security - https 到 http 页面 - 提交的信息是否安全传递?

python - 格式化字符串

java - 以奇数序列打印奇数

Java spring @RequestParam JSP

java - 如何动态地将对象添加到 Hibernate 查询中

java - 无法检索表单 bean 的定义

sql-server - SSMS 结果到网格 - CRLF 未保留在复制/粘贴中 - 有更好的技术吗?