我想知道是否有人知道格式化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
快速谷歌搜索返回我这个从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情况。