Home >Java >javaTutorial >How to Convert Bytes to Human-Readable Format in Java?

How to Convert Bytes to Human-Readable Format in Java?

DDD
DDDOriginal
2024-12-02 12:09:15293browse

How to Convert Bytes to Human-Readable Format in Java?

How to Convert Byte Size into a Human-Readable Format in Java

Determining the human-readable representation of byte size is a common requirement in various computing applications. Java offers a convenient way to accomplish this transformation using the following methods:

SI (1 k = 1,000)

The following method converts byte size to a human-readable format using the International System of Units (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());
}

Binary (1 Ki = 1,024)

For scenarios where binary prefixes are preferred, the following method provides the conversion:

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());
}

Example Output

The provided code snippets generate the following example output:

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)

The above is the detailed content of How to Convert Bytes to Human-Readable Format in Java?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn