データサイズを人間が読める形式に変換

データサイズを人間が読める形式に変換する処理は以下のように作成できる。

/**
 * データサイズを人間が読める形で取得.
 *
 * @param length
 * @return
 */
public static String getPrettyLength(long length) {
    long kilobyte = 1024;
    long megabyte = kilobyte * 1024;
    long gigabyte = megabyte * 1024;
    long terabyte = gigabyte * 1024;
    if ((length >= 0) && (length < kilobyte)) {
        return length + "B";
    } else if ((length >= kilobyte) && (length < megabyte)) {
        return (length / kilobyte) + "KB";
    } else if ((length >= megabyte) && (length < gigabyte)) {
        return (length / megabyte) + "MB";
    } else if ((length >= gigabyte) && (length < terabyte)) {
        return (length / gigabyte) + "GB";
    } else if (length >= terabyte) {
        return (length / terabyte) + "TB";
    } else {
        return length + "Bytes";
    }
}

またはこちらの記事(https://coneta.jp/article/a7b57ee8-80a5-4413-9832-2312a22b957e/)を参考に以下のようにも作成できる。

/**
 * データサイズを人間が読める形で取得.
 *
 * @param length
 * @return
 */
public static String getPrettyLength(long length) {
    if (length <= 0) {
        return "0B";
    }
    String[] suffixes = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
    int i = (int) Math.floor(Math.log(length) / Math.log(1024));
    return String.format("%.0f%s", (length / Math.pow(1024, i)), suffixes[i]);
}