前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >输出文件大小带单位 B -> TB 工具类

输出文件大小带单位 B -> TB 工具类

作者头像
收心
发布2022-01-19 15:22:21
5060
发布2022-01-19 15:22:21
举报
文章被收录于专栏:Java实战博客Java实战博客
代码语言:javascript
复制
/**
 * @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));
    }

}

输出的结果是:

代码语言:javascript
复制
小伙子,传入负数,拒绝使用
2KB
3.0MB
4.0GB
5.0TB
8388607.99TB

特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档