引入全部工具类库
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.10</version>
</dependency>
引入核心类库-包括集合、字符串、Bean等工具
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.3.10</version>
</dependency>
hutool-core中常用api
1.生成随机32位uuid
IdUtil.fastSimpleUUID()
2.身份证号常用工具
是否有效身份证号
IdcardUtil.isValidCard(idCard)
根据身份编号获取年龄
IdcardUtil.getAgeByIdCard(idCard)
根据身份编号获取性别(1 : 男 , 0 : 女)
IdcardUtil.getGenderByIdCard(idCard)
根据身份编号获取户籍省份
IdcardUtil.getProvinceByIdCard(idCard)
身份证号脱敏,显示前4后3
IdcardUtil.hide(idCard,4,15)
根据身份编号获取生日
IdcardUtil.getBirth(idCard)
3.正则相关工具类
英文字母或数字或下划线
Validator.isGeneral(content)
移动电话
Validator.isMobile(content)
是否为字母
Validator.isWord(content)
是否为数字
Validator.isNumber(content)
身份证号码
Validator.isCitizenId(content)
邮件
Validator.isEmail(content)
是否是汉子,是否包含汉字
Validator.isChinese(content)
Validator.hasChinese(content)
4.文件处理类
读取文件字节流
FileUtil.readBytes(path);
文件是否存在
FileUtil.exist(path)
是否绝对路径
FileUtil.isAbsolutePath(path)
是不是目录
FileUtil.isDirectory(path)
是不是文件
FileUtil.isFile(path)
文件夹是不是空的
FileUtil.isDirEmpty(dir)
循环指定目录以及子目录下的所有文件
FileUtil.loopFiles(dirPath).forEach(loopFile->{
System.out.println(loopFile.getName());
});
循环指定目录以及子目录下的所有满足条件的文件
FileUtil.loopFiles(dirPath,fileFilter-> FileUtil.isNotEmpty(fileFilter)).forEach(loopFile->{
System.out.println(loopFile.getName());
});
循环指定深度目录以及子目录下的所有满足条件的文件
FileUtil.loopFiles(FileUtil.file(dirPath),1,fileFilter-> FileUtil.isNotEmpty(fileFilter)).forEach(loopFile->{
System.out.println(FileTypeUtil.getType(loopFile));
});
获取文件类型
FileTypeUtil.getType(loopFile);
FileTypeUtil.getTypeByPath(path)
复制文件
FileUtil.copy(path,destPath,false);
5.http工具类
常用get,post请求
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.32</version>
</dependency>
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class MyHttpUtil {
public Map<String, Object> executeGetRequest(String url, Map<String, Object> params, String token) {
long startTime = System.currentTimeMillis();
Map<String, Object> result = new HashMap<>();
try {
HttpRequest httpRequest = HttpUtil.createGet(url);
httpRequest.form(params);
httpRequest.header("Authorization", token);
HttpResponse httpResponse = httpRequest.execute();
String strResult = httpResponse.body();
long endTime = System.currentTimeMillis();
log.info(strResult);
result = JSON.parseObject(strResult, Map.class);
log.info("调用时间:" + (endTime - startTime) + "ms"); //输出程序运行时间
result.put("returnCode", "2000");
return result;
}catch (Exception e) {
log.error(e.getMessage(),e);
result.put("returnCode", "4000");
result.put("data", null);
return result;
}
}
public Map<String, Object> executePostRequest(String url, Map<String, Object> params, String token) {
long startTime = System.currentTimeMillis();
Map<String, Object> result = new HashMap<>();
try {
HttpRequest httpRequest = HttpUtil.createPost(url);
httpRequest.header("Authorization", token);
String body = JSON.toJSONString(params);
httpRequest.body(body);
HttpResponse httpResponse = httpRequest.execute();
String strResult = httpResponse.body();
long endTime = System.currentTimeMillis();
log.info(strResult);
result = JSON.parseObject(strResult, Map.class);
log.info("调用时间:" + (endTime - startTime) + "ms"); //输出程序运行时间
result.put("returnCode", "2000");
return result;
}catch (Exception e) {
log.error(e.getMessage(),e);
result.put("returnCode", "4000");
result.put("data", null);
return result;
}
}
}
package com.study.hutool.http;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.util.Map;
/**
* hutool方式http工具类
* 支持https请求(默认不验证ssl证书及所有域名被信任)
*/
public class HttpUtil {
/**
* POST请求
*
* @param url
* @param request
* @param headers
* @return
*/
public static String post(String url, Map<String, Object> request, Map<String, String> headers) {
String resStr = HttpRequest.post(url).form(request)
.addHeaders(headers).execute().body();
return resStr;
}
/**
* POST请求
* 请求对象转json格式
*
* @param url
* @param request
* @param headers
* @return
*/
public static String post(String url, Object request, Map<String, String> headers) {
String resStr = HttpRequest.post(url).body(JSON.toJSONString(request))
.addHeaders(headers).execute().body();
return resStr;
}
/**
* get请求
*
* @param url
* @param headers
* @return
*/
public static String get(String url, Map<String, String> headers) {
String resStr = HttpRequest.get(url).addHeaders(headers).execute().body();
return resStr;
}
/**
* put请求
*
* @param url
* @param headers
* @param request
* @return
*/
public static String put(String url, Map<String, String> headers, Map<String, Object> request) {
String resStr = HttpRequest.put(url).addHeaders(headers)
.form(request).execute().body();
return resStr;
}
/**
* 配置代理
* @param url
* @param headers
* @param request
* @param host
* @param port
* @param authUser
* @param authPassword
* @return
*/
public static String proxy(String url, Map<String, String> headers, Map<String, Object> request, String host, int port, String authUser, String authPassword) {
if (null != authUser) {
//如果遇到https代理错误Proxy returns "HTTP/1.0 407 Proxy Authentication Required",可以尝试
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
Authenticator.setDefault(
new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(authUser, authPassword.toCharArray());
}
}
);
}
String resStr = HttpRequest.post(url)
//此处代理类型http
.setProxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress(host, port)))
.form(request)
.addHeaders(headers)
.execute().body();
return resStr;
}
}