当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在Java/JSTL中格式化文件大小》经验,为你挑选了2个好方法。

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

是否有这样的实用工具类?
我搜索了公地但却一无所获.任何自定义标签?
库已经存在吗?

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

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



1> kgiannakakis..:

快速谷歌搜索返回我这个从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情况.



2> Brett Ryan..:

您可以使用commons-io FileUtils.byteCountToDisplaySize方法.对于JSTL实现,您可以在类路径上使用commons-io时添加以下taglib函数:


  fileSize
  org.apache.commons.io.FileUtils
  String byteCountToDisplaySize(long)

现在在您的JSP中,您可以:

<%@ taglib uri="/WEB-INF/FileSizeFormatter.tld" prefix="sz"%>
Some Size: ${sz:fileSize(1024)} 
Some Size: ${sz:fileSize(10485760)} 

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有