首页 > Java > java教程 > 如何在 Java 中将字节大小转换为人类可读的格式?

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

DDD
发布: 2024-11-26 08:08:13
原创
906 人浏览过

How to Convert Byte Sizes to Human-Readable Formats in Java?

在 Java 中获取人类可读格式的字节大小

将字节大小转换为人类可读格式,例如“1 kB ”或“1 MB”是 Java 编程中的常见任务。虽然您可能经常为此编写自己的实用方法,但也有可重用的解决方案可用。

Apache Commons 静态方法

Apache Commons Lang 库提供静态方法字节转换方法大小:

  1. humanReadableByteCountSI: 使用 SI 单位(以 1000 为底),如“GB”、“MB”、“kB”。
  2. humanReadableByteCountBin: 使用二进制单位(基数 1024),如“GiB”, "MiB", "KiB".

实现细节

以下是这些方法的实现:

SI单位:

public static String humanReadableByteCountSI(long bytes) {
    if (-1000 < bytes && bytes < 1000) {
        return bytes + " B";
    }
    CharacterIterator ci = new StringCharacterIterator("kMGTPE");
    while (bytes <= -999_950 || bytes >= 999_950) {
        bytes /= 1000;
        ci.next();
    }
    return String.format("%.1f %cB", bytes / 1000.0, ci.current());
}
登录后复制

二进制单位:

public static String humanReadableByteCountBin(long bytes) {
    long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes);
    if (absB < 1024) {
        return bytes + " B";
    }
    long value = absB;
    CharacterIterator ci = new StringCharacterIterator("KMGTPE");
    for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >>> i; i -= 10) {
        value >>>= 10;
        ci.next();
    }
    value *= Long.signum(bytes);
    return String.format("%.1f %ciB", value / 1024.0, ci.current());
}
登录后复制

示例输出

以下表显示使用 SI 和二进制的各种字节大小的输出方法:

Byte Size SI Binary
0 0 B 0 B
27 27 B 27 B
1024 1.0 kB 1.0 KiB
1728 1.7 kB 1.7 KiB
1855425871872 1.9 TB 1.7 TiB

以上是如何在 Java 中将字节大小转换为人类可读的格式?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板