/**
 * @author : zanglikun
 * @date : 2021/10/28 20:36
 * @Version: 1.0
 * @Desc : 读取文件大小 转成K、KB、MB、GB、TB(不支持大于8388607.9T的数据)
 */
public class FileSizeOut {
    public static String printFileSize(long size) {
        long yilingersi = 1024;
        if (size < 0){
            return "小伙子,传入负数,拒绝使用";
        }
        //B 单位 文件小于yilingersiB直接返回结果
        if (size < yilingersi) {
            return size + "B";
        } else {
            // 文件大于1024 B 单位就得以1KB为单位了,所以除以yilingersi
            size = size / yilingersi;
        }
        // 判断文件是否大于yilingersiKB
        if (size < yilingersi) {
            return size + "KB";
        } else {
            //文件大约yilingersiKB,单位以MB作为单位,所以除以yilingersi。
            size = size / yilingersi;
        }
        // 判断文件是是否大约yilingersiMB,如果在yilingersiMB的范围内,先乘以100,然后运算的时候在除以100 目的是得出精确的小数点后面的数字
        // 比如 768.10MB 整数位很简单得到768 但是 小数部分得不到了所以 先乘以100 得到76810 再取模(%)100 得到10 即为小数部分
        // 以此类推:想得到3位小数,那就乘以1000 再取模 %1000 就可以得到3位部分的内容了
        if (size < yilingersi) {
            size = size * 100;
            return (size / 100) + "."
                    + (size % 100) + "MB";
        } else if (size < yilingersi * yilingersi) {
            //如果要以GB为单位的,先除于yilingersi 再作同样的处理
            size = size * 100 / yilingersi;
            return (size / 100) + "."
                    + (size % 100) + "GB";
        } else {
            //如果要以TB为单位的,除于yilingersi后再除以yilingersi 再作同样的处理
            size = size * 100 / yilingersi / yilingersi;
            return (size / 100) + "."
                    + (size % 100) + "TB";
        }
    }

    public static void main(String[] args) {
        System.out.println(printFileSize(-1L));
        System.out.println(printFileSize(2L * 1024));
        System.out.println(printFileSize(3L * 1024 * 1024));
        System.out.println(printFileSize(4L * 1024 * 1024 * 1024));
        System.out.println(printFileSize(5L * 1024 * 1024 * 1024 * 1024));
        System.out.println(printFileSize(Long.MAX_VALUE));
    }

}

输出的结果是:

小伙子,传入负数,拒绝使用
2KB
3.0MB
4.0GB
5.0TB
8388607.99TB