/** * Copyright (c) 2013-Now http://jeesite.com All rights reserved. */ package com.ruoyi.common.core.lang; /** * 字节转换工具 * @author ThinkGem * @version 2015-6-20 */ public class ByteUtils { private static final int UNIT = 1024; /** * @param byteSize 字节 * @return */ public static String formatByteSize(long byteSize) { if (byteSize <= -1){ return String.valueOf(byteSize); } double size = 1.0 * byteSize; String type = "B"; if((int)Math.floor(size / UNIT) <= 0) { //不足1KB type = "B"; return format(size, type); } size = size / UNIT; if((int)Math.floor(size / UNIT) <= 0) { //不足1MB type = "KB"; return format(size, type); } size = size / UNIT; if((int)Math.floor(size / UNIT) <= 0) { //不足1GB type = "MB"; return format(size, type); } size = size / UNIT; if((int)Math.floor(size / UNIT) <= 0) { //不足1TB type = "GB"; return format(size, type); } size = size / UNIT; if((int)Math.floor(size / UNIT) <= 0) { //不足1PB type = "TB"; return format(size, type); } size = size / UNIT; if((int)Math.floor(size / UNIT) <= 0) { type = "PB"; return format(size, type); } return ">PB"; } private static String format(double size, String type) { int precision = 0; if(size * 1000 % 10 > 0) { precision = 3; } else if(size * 100 % 10 > 0) { precision = 2; } else if(size * 10 % 10 > 0) { precision = 1; } else { precision = 0; } String formatStr = "%." + precision + "f"; if("KB".equals(type)) { return String.format(formatStr, (size)) + "KB"; } else if("MB".equals(type)) { return String.format(formatStr, (size)) + "MB"; } else if("GB".equals(type)) { return String.format(formatStr, (size)) + "GB"; } else if("TB".equals(type)) { return String.format(formatStr, (size)) + "TB"; } else if("PB".equals(type)) { return String.format(formatStr, (size)) + "PB"; } return String.format(formatStr, (size)) + "B"; } }