获取文件大小Byte、KB、MB、GB、TB单位自动转换

获取文件大小Byte、KB、MB、GB、TB单位自动转换

下面这个是直接获取Byte(字节大小)

/**
     * 获取文件的大小(Byte)
     * @param file 文件
     * @return 文件的大小 若文件不存在或者不是文件就返回null
     */
    public static Long getByteSize(File file) {
        if (file.exists() && file.isFile()) {
            return file.length();
        }
        return null;
    }

这一个是标题说的那种情况、会自动判断文件大小生成文件达到的最大单位为单位的、大小为小数点后三位、四舍五入的字符串(方便存入数据库中)

/**
     * 获取文件的大小(返回到达的最高单位)
     * 比如:1024Byte就不再用Byte
     *      直接返回1KB
     *      返回值精确到小数点后3位
     * @param file 文件
     * @return 文件的大小 若文件不存在或者不是文件就返回null
     */
    public static String getSize(File file) {
        long size = getByteSize(file);
        double s = (double) size;
        String unit;
        if (size != -1L) {
            int l;
            if (size < 1024L) {
                l = 0;
            } else if (size < 1024L * 1024L) {
                l = 1;
                s = (double) size / 1024L;
            } else {
                for (l = 2; size >= 1024L * 1024L; l++) {
                    size = size / 1024L;
                    if ((size / 1024L) < 1024L) {
                        s = (double) size / 1024L;
                        break;
                    }
                }
            }

            switch (l) {
                case 0:
                    unit = "Byte";
                    break;
                case 1:
                    unit = "KB";
                    break;
                case 2:
                    unit = "MB";
                    break;
                case 3:
                    unit = "GB";
                    break;
                case 4:
                    //不可能也不该达到的值
                    unit = "TB";
                    break;
                default:
                    //ER代表错误
                    unit = "ER";
            }

            String format = String.format("%.3f", s);
            return format + unit;
        }
        return null;
    }

你可能感兴趣的:(Java,文件操作)