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

如何在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

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号