开发总结的一些小工具api
Posted zhangblearn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发总结的一些小工具api相关的知识,希望对你有一定的参考价值。
生成一个指定位数的随机字符串:
public static String genRandomStr(int length){ //35是因为数组是从0开始的,26个字母+10个数字 final int maxNum = 36; int i; //生成的随机数 int count = 0; //生成的密码的长度 char[] str = { ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘, ‘i‘, ‘j‘, ‘k‘, ‘l‘, ‘m‘, ‘n‘, ‘o‘, ‘p‘, ‘q‘, ‘r‘, ‘s‘, ‘t‘, ‘u‘, ‘v‘, ‘w‘, ‘x‘, ‘y‘, ‘z‘, ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘ }; StringBuffer pwd = new StringBuffer(""); Random r = new Random(); while(count < length){ //生成随机数,取绝对值,防止生成负数, i = Math.abs(r.nextInt(maxNum)); //生成的数最大为36-1 if (i >= 0 && i < str.length) { pwd.append(str[i]); count ++; } } return pwd.toString(); }
获取n位随机数字:
public static String random(int n) { if (n < 1 || n > 10) { throw new IllegalArgumentException("cannot random " + n + " bit number"); } Random ran = new Random(); if (n == 1) { return String.valueOf(ran.nextInt(10)); } int bitField = 0; char[] chs = new char[n]; for (int i = 0; i < n; i++) { while(true) { int k = ran.nextInt(10); if( (bitField & (1 << k)) == 0) { bitField |= 1 << k; chs[i] = (char)(k + ‘0‘); break; } } } return new String(chs); }
MD5加码 生成32位md5码:
public static String string2MD5(String inStr){ MessageDigest md5 = null; try{ md5 = MessageDigest.getInstance("MD5"); }catch (Exception e){ return ""; } char[] charArray = inStr.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++) byteArray[i] = (byte) charArray[i]; byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++){ int val = ((int) md5Bytes[i]) & 0xff; if (val < 16) hexValue.append("0"); hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); }
BASE64字符串与二进制流:
/** * 二进制流转BASE64字符串 * @param data * @return */ public static String byteToBase(byte[] data){ BASE64Encoder encoder = new BASE64Encoder(); return data != null ? encoder.encode(data) : ""; } /** * BASE64字符串转二进制流 * @param str * @return * @throws Exception */ public static byte[] baseTobyte(String str) throws Exception{ BASE64Decoder decoder = new BASE64Decoder(); return str != null ? decoder.decodeBuffer(str) : null; }
文件流转BASE64字符串:
/** * 文件流转BASE64字符串 * @param in * @return */ public static String fileToBase(InputStream in) { // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 byte[] data = null; // 读取图片字节数组 try { ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[100]; int rc = 0; while ((rc = in.read(buff, 0, 100)) > 0) { swapStream.write(buff, 0, rc); } data = swapStream.toByteArray(); } catch (IOException e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } return new String(Base64.encodeBase64(data)); }
BASE64转MultipartFile:
这个转换需要一个实现类去实现MultipartFile。
import org.springframework.web.multipart.MultipartFile; import java.io.*; public class BaseToMultipartFile implements MultipartFile { private final byte[] imgContent; private final String header; public BaseToMultipartFile(byte[] imgContent, String header) { this.imgContent = imgContent; this.header = header.split(";")[0]; } @Override public String getName() { return System.currentTimeMillis() + Math.random() + "." + header.split("/")[1]; } @Override public String getOriginalFilename() { return System.currentTimeMillis() + (int)Math.random() * 10000 + "." + header.split("/")[1]; } @Override public String getContentType() { return header.split(":")[1]; } @Override public boolean isEmpty() { return imgContent == null || imgContent.length == 0; } @Override public long getSize() { return imgContent.length; } @Override public byte[] getBytes() throws IOException { return imgContent; } @Override public InputStream getInputStream() throws IOException { return new ByteArrayInputStream(imgContent); } @Override public void transferTo(File dest) throws IOException, IllegalStateException { new FileOutputStream(dest).write(imgContent); } }
工具方法:
/** * BASE64转MultipartFile * @param base64 * @return */ public static MultipartFile base64ToMultipart(String base64) throws Exception{ String[] baseStrs = base64.split(","); BASE64Decoder decoder = new BASE64Decoder(); byte[] b = new byte[0]; b = decoder.decodeBuffer(baseStrs[1]); for(int i = 0; i < b.length; ++i) { if (b[i] < 0) { b[i] += 256; } } return new BaseToMultipartFile(b, baseStrs[0]); }
以上是关于开发总结的一些小工具api的主要内容,如果未能解决你的问题,请参考以下文章