工具类总结记录
一、字符串类:
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;
}
}

浙公网安备 33010602011771号