import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.codec.binary.Base64;
/**
* 工具类
*
*/
public class Utils {
static String regEx = "[\u4e00-\u9fa5]";
static Pattern pat = Pattern.compile(regEx);
/**
* 获取系统当前时间
* @return 时间字符串
*/
public static String getDateTime(){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new Date());
}
/**
* 获取系统当前时间
* @return 时间字符串
*/
public static String getDateTimeNum(){
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
return sdf.format(new Date());
}
/**
* 获取UUID
* @return
*/
public static String getUUid(){
return UUID.randomUUID().toString();
}
/**
* 重命名图片
* @param name
* @return
*/
public static String getImageName(String name){
StringBuffer str=new StringBuffer();
str.append(getDateTimeNum());
str.append("-");
str.append(getUUid().substring(1, 4));
str.append("-");
if (isContainsChinese(name)) {
str.append(getUUid().substring(0, 8));
str.append(".");
str.append(name.split("\\.")[1]);
}else{
str.append(name);
}
return str.toString().trim();
}
/**
* 判断字符串中是否存在
* @param str
* @return
*/
public static boolean isContainsChinese(String str)
{
Matcher matcher = pat.matcher(str);
boolean flg = false;
if (matcher.find()) {
flg = true;
}
return flg;
}
/**
* 获取结束时间
* @Desc {}
* @param dateStr
* @return
*/
public static String getMidnightDate(String dateStr) {
if(dateStr == null || "".equals(dateStr)){
return null;
}
return dateStr+" 23:59:59";
}
/**
* 加盐加密
* @param params
* @param salt
* @return
*/
public static String md5Salt(String params, String salt){
String str = MD5(params);
String result = MD5(str+salt);
return result;
}
/**
* md5加密
* @param s
* @return
*/
public final static String MD5(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
try {
byte[] btInput = s.getBytes("UTF-8");
// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* base64加密
* @param str
* @return
*/
public static String base64Encode(String str) {
byte[] b = null;
String s = null;
try {
b = str.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (b != null) {
s = Base64.encodeBase64String(b);
}
return s;
}
/**
* base64解密
* @param str
* @return
*/
public static String base64Decode(String str) {
String s = null;
byte[] b = Base64.decodeBase64(str);
try {
s = new String(b, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return s;
}
/**
* 数据导出excel时,根据不同的客户端请求浏览器转换文件名,以防止出现乱码
* @param req
* @param fileName
* @return String
* @throws UnsupportedEncodingException
*/
public static String transferFileName(HttpServletRequest req, String fileName) throws UnsupportedEncodingException {
String exportFileName = "";
if (isFirefoxBrowse(req)) {//火狐浏览器
exportFileName = new String(fileName.getBytes(), "ISO8859-1");
} else {
exportFileName = URLEncoder.encode(fileName, "UTF8");//其他浏览器
}
return exportFileName;
}
/**
* 判断客户端请求是否是火狐浏览器
* @param req
* @return boolean
*/
public static boolean isFirefoxBrowse(HttpServletRequest req) {
String userAgent = req.getHeader("USER-AGENT");
if (userAgent.indexOf("Firefox") != -1) {//火狐浏览器
return true;
} else {//其他浏览器
return false;
}
}
/**
* 根据指定大小切割list
* @param resList
* @param count
* @return
*/
public static <T> List<List<T>> splitList(List<T> resList, int count) {
if (resList == null || count < 1)
return null;
List<List<T>> ret = new ArrayList<List<T>>();
int size = resList.size();
if (size <= count) { // 数据量不足count指定的大小
ret.add(resList);
} else {
int pre = size / count;
int last = size % count;
// 前面pre个集合,每个大小都是count个元素
for (int i = 0; i < pre; i++) {
List<T> itemList = new ArrayList<T>();
for (int j = 0; j < count; j++) {
itemList.add(resList.get(i * count + j));
}
ret.add(itemList);
}
// last的进行处理
if (last > 0) {
List<T> itemList = new ArrayList<T>();
for (int i = 0; i < last; i++) {
itemList.add(resList.get(pre * count + i));
}
ret.add(itemList);
}
}
return ret;
}
/**
* 清空文件夹
* @param file
*/
public static void deleteAllFile(File file){
if(file.isDirectory()){
File[] files = file.listFiles();
for(File f:files){
if(f.isFile()){
f.delete();
}else{
deleteAllFile(f);
f.delete();
}
}
}
}
}
java自定义工具类
最新推荐文章于 2024-08-27 11:39:34 发布