工具类总结记录

一、字符串类:

  1.判断字符串是否为空

/**
* 判断字符串是否为空
*/
public static boolean isEmpty(String str){
    if( str == null || str.length() <= 0){
         return true;
    }
    return false;
}

   2.判断字符串是否为JSON字符串

import org.apache.commons.lang3.StringUtils;
import net.sf.json.JSONObject;
/**
 * 判断字符串是否为JSON字符串
 */
public static boolean isGoodJson(String json) {
    if (StringUtils.isBlank(json)) {
        return false;
    }
    try {
        JSONObject jsonObject = JSONObject.fromObject( json );
        return true;
    } catch (Exception e) {
        return false;
    }
}

二、集合类空判断

  1.判断list是否为空

import java.util.List;
/**
 * 判断list是否为空
 */
public static boolean isListEmpty(List<?> list){
    return list == null || list.size() == 0;
}

  2.判断map是否为空

import java.util.Map;
/**
 * 判断map是否为空
 */
public static boolean isMapEmpty(Map<?,?> map){
    return map == null || map.size() == 0;
} 

  3.生成随机字符串 ,默认32位

import java.security.SecureRandom;
import java.util.Date;
/**
 * 生成随机字符串 ,默认32位
 */
public static String generateRandom(Integer length)
{
    if(length == null)
        length = 16;
    SecureRandom secureRandom = new SecureRandom(Long.toString((new Date()).getTime()).getBytes());
    byte seedBytes[] = secureRandom.generateSeed(length);
    return byteToHex(seedBytes);
}

/**
 * 字节与16进制字符串转换
 */
private static String byteToHex(byte[] b)
{
    String hs = "";
    String stmp = "";
    for (int n = 0; n < b.length; n++)
    {
        stmp = (Integer.toHexString(b[n] & 0XFF));
        if (stmp.length() == 1)
        {
            hs = hs + "0" + stmp;
        } else
        {
            hs = hs + stmp;
        }
    }
    return hs.toUpperCase();
}

 

三、数字类判断

  1.判断字符串是否是整数

/**
 * 判断字符串是否是整数
 */
public static boolean isInteger(String value) {
    try {
        Integer.parseInt(value);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

  2.判断字符串是否是浮点数

/**
 * 判断字符串是否是浮点数
 */
public static boolean isDouble(String value) {
    try {
        Double.parseDouble(value);
        if (value.contains("."))
            return true;
        return false;
    } catch (NumberFormatException e) {
        return false;
    }
}

  3.判断字符串是否是数字

/**
 * 判断字符串是否是数字
 * 即要判断是否是整数或者是否是浮点数
 */
public static boolean isNumber(String value) {
    return isInteger(value) || isDouble(value);
}

  4.判断integer是否大于0

/**
 * 判断integer是否大于0
 */
public static boolean isIntegerGtZero(Integer i){
    return i != null && i.intValue() > 0;
}

四、时间类

  1.传入时间是当前时间多久之前  格式:n(分钟/小时/天)前

import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * 传入时间是当前时间多久之前
 * 格式化时间    格式:n(分钟/小时/天)前
 */
public static String dateFormat(Date date)
{
    Date now = new Date();
    long minute = 60;
    long hour = 3600;
    long day = 3600*24;
    long x = (now.getTime()-date.getTime())/1000;
    if(x<60)
    {
        return "1分钟前";
    }
    else if(x>minute && x<hour)
    {
        return (int)x/minute+"分钟前";
    }else if(x>hour && x<day)
    {
        return x/hour+"小时前";
    }else
    {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return dateFormat.format(date);
    }
}

  2.获取当前时间格式化

import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * 获取当前时间yyyy-MM-dd HH:mm:ss
 */
public static String getYYYYMMDDHHmmss(int mode, Date date){
    String format = "yyyy-MM-dd HH:mm:ss";
    switch (mode) {
        case 1:
            format = "yyyy/MM/dd HH:mm:ss";
            break;
        case 2:
            format = "yyyy.MM.dd HH:mm:ss";
            break;
        case 3:
            format = "yyyy年MM月dd日 HH:mm:ss";
            break;
        case 4:
            format = "yyyyMMddHHmmss";
            break;
        case 5:
            format = "yyyy-MM-dd";
            break;
        case 6:
            format = "yyyy-MM";
            break;
        case 7:
            format = "yyyy-MM-dd HH:mm";
            break;
        case 8:
            format = "MM-dd";
            break;
        case 9:
            format = "YYYYMMdd";
            break;
        default:
            break;
    }
    SimpleDateFormat dateFormat = new SimpleDateFormat(format);
    return dateFormat.format(date);
}

  3.两个时间的比较

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * @param oldTime 较小的时间
 * @param newTime 较大的时间 (如果为空   默认当前时间 ,表示和当前时间相比)
 * @return -1 :同一天.    0:昨天 .   1 :至少是前天.
 * @throws java.text.ParseException 转换异常
 */
public static int isYeaterday(Date oldTime,Date newTime) throws ParseException {
    if(newTime==null){
        newTime=new Date();
    }
    //将下面的 理解成  yyyy-MM-dd 00:00:00 更好理解点
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    String todayStr = format.format(newTime);
    Date today = format.parse(todayStr);
    //昨天 86400000=24*60*60*1000 一天
    if((today.getTime()-oldTime.getTime())>0 && (today.getTime()-oldTime.getTime())<=86400000) {
        return 0;
    }
    else if((today.getTime()-oldTime.getTime())<=0){ //至少是今天
        return -1;
    }
    else{ //至少是前天
        return 1;
    }
}

  4.得到本月月初时间

import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * 得到本月月初时间
 */
public static String getCurMonthFirstDay(){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
    String date = sdf.format(new Date());
    date += "-01 00:00:01";
    return date;
}

  5.获取昨天,前天,明天的日期

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
 * 获取昨天,前天,明天的日期
 * 昨天 -1 今天 0  明天 1
 */
public static String getDate(int i){
    Calendar cal=Calendar.getInstance();
    cal.add(Calendar.DATE,+i);
    Date time=cal.getTime();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return dateFormat.format(time);
}

  6.转换时间格式(Date to TimeStamp)

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * 转换时间格式(Date to TimeStamp)
 */
public static Timestamp setTimeFormat(Date date){
	SimpleDateFormat simpleTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	String dateStr = simpleTime.format(date);
	try {
		Date dateTime = simpleTime.parse(dateStr);
		Timestamp timestamp = new Timestamp(dateTime.getTime());
		return timestamp;
	} catch (ParseException e) {
		e.printStackTrace();
	}
	return null;
}

五、文件类

  1.获取文件扩展名

/**
 * Java文件操作 获取文件扩展名
 */
public static String getExtensionName(String filename) {
    if ((filename != null) && (filename.length() > 0)) {
        int dot = filename.lastIndexOf('.');
        if ((dot >-1) && (dot < (filename.length() - 1))) {
            return filename.substring(dot + 1);
        }
    }
    return filename;
}

  2.获取不带扩展名的文件名

/**
 * Java文件操作 获取不带扩展名的文件名
 */
public static String getFileNameNoEx(String filename) {
    if ((filename != null) && (filename.length() > 0)) {
        int dot = filename.lastIndexOf('.');
        if ((dot >-1) && (dot < (filename.length()))) {
            return filename.substring(0, dot);
        }
    }
    return filename;
}

  3.流的形式  上传图片

import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.RandomUtils;
/**
 *流的形式  上传图片
 */
public void uploadImage(HttpServletRequest request,MultipartFile files){

    String path="";
    if (!files.isEmpty()) {
        // 获取原文件名
        String oldFileName = files.getOriginalFilename();
        // 获取原文件名的后缀
        String prefix = FilenameUtils.getExtension(oldFileName);// 原文件后缀
        int filesize = 5000000;
        // 上传大小不得超过 500k
        if (files.getSize() > filesize) {
            //上传大小不能超过2M

        } else if (prefix.equalsIgnoreCase("jpg") || prefix.equalsIgnoreCase("png") || prefix.equalsIgnoreCase("gif")
                || prefix.equalsIgnoreCase("jpeg") || prefix.equalsIgnoreCase("pneg")) {// 上传图片格式不正确
            // 新的照片名称,毫秒数加随机数,确保不能重复
            String fileName = System.currentTimeMillis() + RandomUtils.nextInt(1000000, filesize)+ "_Personal.jpg";
            // 创建文件对象,此文件对象用于接收用户上传的文件流
            path=request.getSession().getServletContext().getRealPath("upload/messageImage");
            //上传的路径
            String paths="/***/***Image/"+fileName;
            File targetFile = new File(path, fileName);
            if (!targetFile.exists()) {
                targetFile.mkdirs();
            }
            // 保存
            try {
                // 把MultipartFile中的文件流数据的数据输出至目标文件中
                files.transferTo(targetFile);
            } catch (Exception e) {
                e.printStackTrace();
                //"上传失败"
            }
            request.setAttribute("data",paths);
        } else {
            request.setAttribute("data","上传图片格式不正确");
        }
    }else{
        request.setAttribute("data","图片不能为空");
    }
}

 4.上传文件

import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
/**
 * 上传文件
 */
public static HashMap uploadFile(HttpServletRequest request, MultipartFile file) {
    if (file.isEmpty())
        return null;
    //绝对路径
    String realPath = request.getSession().getServletContext().getRealPath("");
    //相对路径
    SimpleDateFormat yf = new SimpleDateFormat("yyyyMM");
    SimpleDateFormat df = new SimpleDateFormat("dd");
    String uploadPath = "upload/"+yf.format(new Date())+"/"+df.format(new Date())+"/";
    //完整路径
    String path = realPath+"/"+uploadPath;
    //文件名
    String fileName = System.currentTimeMillis()+String.valueOf((Math.random()*8999+1000))+"."+ getExtensionName(file.getOriginalFilename());
    File targetFile = new File(path, fileName);
    if(!targetFile.exists()){
        targetFile.mkdirs();
    }
    try {
        file.transferTo(targetFile);
        HashMap<String, String> map = new HashMap();
        map.put("uploadPath", uploadPath+fileName);
        map.put("filePath", path+fileName);
        return map;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
/**
 * Java文件操作 获取文件扩展名
 */
public static String getExtensionName(String filename) {
    if ((filename != null) && (filename.length() > 0)) {
        int dot = filename.lastIndexOf('.');
        if ((dot >-1) && (dot < (filename.length() - 1))) {
            return filename.substring(dot + 1);
        }
    }
    return filename;
}

  5.base64格式字符传文件

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Collections;
import java.util.Random;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.dom4j.io.SAXReader;
/**
 * base64格式字符传文件
 * @param base64Str base64格式字符
 * @param fileType 文件类型 userApprove:实名认证;imgCode:图片验证码,goodImg:商品图片,userImg:用户头像,adverImg:广告图片,brandImg:品牌图片,businesImg:店铺图片,conversationPic:话题分类图片,ThumbNailImg:文章缩略图,ArticleImg:文章大图,afterSalesPic:售后图片
 * @param imgType 图片类型
 * @return
 */
public static String getFilePath(String base64Str,String fileType,String imgType){
    StringBuffer stringBuffer=new StringBuffer();
    String fileName = returnFileUploadUrl(base64Str, fileType, imgType);
    JSONArray jsonArray = JSONArray.fromObject(fileName);
    for(int i=0;i<jsonArray.size();i++){
        JSONObject jsonObject=jsonArray.getJSONObject(i);
        if(i==0){
            stringBuffer.append(jsonObject.get("filePath"));
        }else {
            stringBuffer.append(","+jsonObject.get("filePath"));
        }
    }
    return stringBuffer.toString();
}

/**
 * 根据传递的base64,fileType生成不同类型的图片,并且返回jsonArray字符串类型的数组;
 */
public static String returnFileUploadUrl(String base64,String fileType,String imgType){
    JSONArray jsonArray=new JSONArray();
    String [] base64list=base64.split(",");
    boolean result=false;
    String fileName= null;
    for(int i=0;i<base64list.length;i++) {
        if(imgType != null){
            fileName=getFileUrl(fileType, getUUid()+"."+imgType);
        }else{
            fileName=getFileUrl(fileType, getUUid()+".jpg");
        }
        if(base64list[i]!=null ||!base64list[i].equals("")) {
            JSONObject jsonObject=new JSONObject();
            if(generateImage(base64list[i], fileName)) {
                jsonObject.put("filePath",fileName.substring(fileName.indexOf("/upload")));
                jsonArray.add(jsonObject);
            }
        }
    }
    return jsonArray.toString();
}

public String getFileUrl(String imageType,String fileName){
    String realPath =getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
    SAXReader saxReader = new SAXReader();
    if(realPath.indexOf("WEB-INF")>0) {
        realPath = realPath.substring(0, realPath.indexOf("/WEB-INF");
    }
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    String now = sdf.format(new Date());
    String path = realPath+"/upload/"+imageType+"/"+now;
    File file = new File(path.trim());
    // 如果文件夹不存在则创建
    if (!file.exists() && !file.isDirectory()) {
        file.mkdirs();
    }
    return realPath+"/upload/"+imageType+"/"+file.getName()+"/"+fileName;
    }
  /**
   * 生成主键ID--将字符串先生成出来,然后乱序
   */
public static String getUUid(){
	SimpleDateFormat sf=new SimpleDateFormat("yyyyMMddHHssmm");
        String uuid=sf.format(new Date())+getRandomString(7);
        return collectionsNum(uuid);
    }
  /**
   * 随机数
   */
public static String getRandomString(int length) {
    String str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    Random random = new Random();
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < length; ++i) {
        int number = random.nextInt(62);// [0,62)
        sb.append(str.charAt(number));
    }
    return sb.toString();
}

public static String collectionsNum(String strNum){
    char [] str=strNum.toCharArray();
    List<String> randRum=new ArrayList<String>();
    for(int i=0;i<str.length;i++){
        randRum.add(String.valueOf(str[i]));
    }
    Collections.shuffle(randRum);
    StringBuffer sb=new StringBuffer();
    for(int i=0;i<randRum.size();i++){
        sb.append(randRum.get(i));
    }
    return sb.toString().trim();
}

public static boolean generateImage(String imgStr,String imgFilePath){
    if (imgStr == null) //图像数据为空
         return false;
    try{
       //Base64解码
        byte[] b = Base64.decodeBase64(imgStr);
          for(int i=0;i<b.length;++i){
               if(b[i]<0){//调整异常数据
                   b[i]+=256;
               }
          }
            //生成jpeg图片
                OutputStream out = new FileOutputStream(imgFilePath);
                out.write(b);
                out.flush();
                out.close();
                return true;
        }catch (Exception e){
               return false;
        }
   }

  

 

posted @ 2018-09-02 13:47  CansonHai  阅读(278)  评论(0)    收藏  举报