为了账号安全,请及时绑定邮箱和手机立即绑定

如何在java中将字节大小转换为人类可读的格式?

如何在java中将字节大小转换为人类可读的格式?

临摹微笑 2019-07-31 11:25:12
如何在java中将字节大小转换为人类可读的格式?如何在Java中将字节大小转换为人类可读的格式?像1024应该变成“1 Kb”而1024 * 1024应该变成“1 Mb”。我有点厌倦为每个项目编写这个实用工具方法。Apache Commons中是否有任何静态方法?
查看完整描述

3 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

这是我的去处(没有循环并处理SI单位和二进制单位):

public static String humanReadableByteCount(long bytes, boolean si) {
    int unit = si ? 1000 : 1024;
    if (bytes < unit) return bytes + " B";
    int exp = (int) (Math.log(bytes) / Math.log(unit));
    String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (si ? "" : "i");
    return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);}

示例输出:

                              SI     BINARY


                   0:        0 B        0 B

                  27:       27 B       27 B

                 999:      999 B      999 B

                1000:     1.0 kB     1000 B

                1023:     1.0 kB     1023 B

                1024:     1.0 kB    1.0 KiB

                1728:     1.7 kB    1.7 KiB

              110592:   110.6 kB  108.0 KiB

             7077888:     7.1 MB    6.8 MiB

           452984832:   453.0 MB  432.0 MiB

         28991029248:    29.0 GB   27.0 GiB

       1855425871872:     1.9 TB    1.7 TiB

 9223372036854775807:     9.2 EB    8.0 EiB   (Long.MAX_VALUE)                              SI     BINARY


                   0:        0 B        0 B

                  27:       27 B       27 B

                 999:      999 B      999 B

                1000:     1.0 kB     1000 B

                1023:     1.0 kB     1023 B

                1024:     1.0 kB    1.0 KiB

                1728:     1.7 kB    1.7 KiB

              110592:   110.6 kB  108.0 KiB

             7077888:     7.1 MB    6.8 MiB

           452984832:   453.0 MB  432.0 MiB

         28991029248:    29.0 GB   27.0 GiB

       1855425871872:     1.9 TB    1.7 TiB

 9223372036854775807:     9.2 EB    8.0 EiB   (Long.MAX_VALUE)

相关文章:Java:将字节大小格式化为人类可读格式


查看完整回答
反对 回复 2019-07-31
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

使用Android内置类

对于Android,有一个类Formatter。就像代码一样,你就完成了。

android.text.format.Formatter.formatShortFileSize(activityContext, bytes);

它是formatFileSize(),但尝试生成更短的数字(显示更少的小数)。

android.text.format.Formatter.formatFileSize(activityContext, bytes);

格式化内容大小为字节,千字节,兆字节等形式。


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 871 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信