将字节转换为可读值的框架

时间:2018-08-02 17:26:12

标签: java

我有一个Java变量,其数据类型为long,包含一个文件大小(以字节为单位)。 我想以一种易于理解的方式显示文件的大小:

  1. 当大小至少为1GB时,以GB为单位显示大小,否则请执行步骤2
  2. 如果大小至少为1MB,则以MB为单位显示大小,否则请执行步骤3
  3. 当大小至少为1KB时,以KB为单位显示大小

可以对此进行编程,但是我想知道是否已经存在一个提供此功能的Java框架?

例如,我有一个变量:

long bytes = 1024L;

我想将其打印为字符串:“ 1 KB”。

2 个答案:

答案 0 :(得分:1)

最接近的Java SE是ChoiceFormat。使用ChoiceFormat的最简单方法是使用MessageFormat的字符串表示形式:

long fileSize = /* ... */ ;

String humanReadableSize = MessageFormat.format("{0,choice" +
    ",0#{0,number,integer} B" +
    "|1024#{1,number,0.0} KB" +
    "|" + (1024 * 1024) + "#{2,number,0.0} MB" +
    "|" + (1024 * 1024 * 1024) + "#{3,number,0.0} GB" +
    "}",
    fileSize,
    fileSize / 1024f,
    fileSize / (1024f * 1024f),
    fileSize / (1024f * 1024f * 1024f));

答案 1 :(得分:1)

您可能想查看Apache Commons FileUtils.byteCountToDisplaySize(long)。它处理long的所有可能(非负)值。

用法:

import org.apache.commons.io.FileUtils;

long fileSizeBytes = ...;
FileUtils.byteCountToDisplaySize(fileSizeBytes);