简单自定义工具

工具类,用于将 字节数 转换成为合理的 字符串单位显示

调用的方式
String size = MySizeTool.formatFileSize(343434,true); //保留2位小数
String size = MySizeTool.formatFileSize(343434,false); //保留整数

public class MySizeTool {

    /**
     * 通过字节数得到当前的格式化字符串数据
     *
     * @param size
     *            字节数大小
     * @param flag
     *            是否保留2位小数. true表示保留,false表示不保留
     * @return 格式化好的字符串数据,例如: 36MB 或者 36.30MB
     */
    public static String formatFileSize(long size, boolean flag) {
        // 定义需要返回的字符串
        String result = null;
        // 定义字符串
        String grade = null;
        // 定义整数部分和小数部分
        long zhengShu = 0;
        double xiaoShu = 0;
        // 将size赋值
        long mSize = size;
        // 查看使用什么级别的数据
        int count = -1;
        while (mSize > 0) {
            // 计算需要多少个1024
            mSize /= 1024;
            count++;
        }
        // 如果需要0-B 1-KB 2-MB 3-GB 4-TB 5-PB

        switch (count) {

            case 0:
                result = size + "B";
                break;
            case 1:
                zhengShu = size >> 10;
                xiaoShu = 1.0 * size / 1024 - zhengShu;
                grade = "KB";
                break;
            case 2:
                zhengShu = size >> 20;
                xiaoShu = 1.0 * size / 1024 / 1024 - zhengShu;
                grade = "MB";
                break;
            case 3:
                zhengShu = size >> 30;
                xiaoShu = 1.0 * size / 1024 / 1024 / 1024 - zhengShu;
                grade = "GB";
                break;
            case 4:
                zhengShu = size >> 40;
                xiaoShu = 1.0 * size / 1024 / 1024 / 1024 / 1024 - zhengShu;
                grade = "TB";
                break;
            case 5:
                zhengShu = size >> 50;
                xiaoShu = 1.0 * size / 1024 / 1024 / 1024 / 1024 / 1024 - zhengShu;
                grade = "PB";
                break;
        }
        // 判断
        if (count != 0) {
            // 得到结果
            result = calculate(flag, zhengShu, xiaoShu, grade);
        }
        // 返回数据
        return result;
    }

    // 用于计算的操作
    private static String calculate(boolean flag, long zhengShu, double xiaoShu, String grade) {
        String result;
        String xs;
        xs = xiaoShu + "";
        // 去掉前面两个字符 0
        // 是否可以保留数据
        if (flag == true) {
            if (xs.length() < 4) {
                xs = ".00";
            } else {
                xs = xs.substring(1, 4);
            }
            result = zhengShu + xs + grade;
        } else {
            result = zhengShu + grade;
        }
        return result;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43908950/article/details/84982000
今日推荐