package com.qiniu.qiniulab.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Locale; public class Tools { private final static int FZ_KB = 1024; private final static int FZ_MB = 1024 * FZ_KB; private final static int FZ_GB = 1024 * FZ_MB; private final static int FZ_PB = 1024 * FZ_GB; private final static int TS_SECOND = 1000; private final static int TS_MINUTE = 60 * TS_SECOND; private final static int TS_HOUR = 60 * TS_MINUTE; public static String formatSize(long fileLength) { StringBuilder sb = new StringBuilder(); if (fileLength < FZ_KB) { sb.append(formatDouble(fileLength, 1)).append(" B"); } else if (fileLength <= FZ_MB) { sb.append(formatDouble(fileLength, FZ_KB)).append(" KB"); } else if (fileLength <= FZ_GB) { sb.append(formatDouble(fileLength, FZ_MB)).append(" MB"); } else if (fileLength <= FZ_PB) { sb.append(formatDouble(fileLength, FZ_GB)).append(" GB"); } else { sb.append(formatDouble(fileLength, FZ_PB)).append(" PB"); } return sb.toString(); } public static String formatMilliSeconds(long milliSeconds) { StringBuilder sb = new StringBuilder(); long left = milliSeconds; if (left / TS_HOUR > 0) { sb.append(left / TS_HOUR).append("h "); left -= (left / TS_HOUR) * TS_HOUR; } if (left / TS_MINUTE > 0) { sb.append(left / TS_MINUTE).append("m "); left -= (left / TS_MINUTE) * TS_MINUTE; } if (left / TS_SECOND > 0) { sb.append(left / TS_SECOND).append("s "); left -= (left / TS_SECOND) * TS_SECOND; } sb.append(left).append("ms "); return sb.toString(); } public static String formatDouble(long value, int divider) { double result = value * 1.0 / divider; return String.format(Locale.getDefault(), "%.2f", result); } public static String formatSpeed(double deltaSize, double deltaMillis) { double speed = deltaSize * 1000 / deltaMillis / FZ_KB; String result = String.format(Locale.getDefault(), "%.2f KB/s", speed); if ((int) speed > FZ_KB) { result = String.format(Locale.getDefault(), "%.2f MB/s", speed / FZ_KB); } return result; } public static byte[] sha1(String val) throws NoSuchAlgorithmException, UnsupportedEncodingException { byte[] data = val.getBytes("utf-8"); MessageDigest mDigest = MessageDigest.getInstance("sha1"); return mDigest.digest(data); } }