Skip to content
This repository was archived by the owner on Jan 24, 2019. It is now read-only.

Repository files navigation

封装一些常用的功能(JDK至少需要1.8),持续更新

API文档

使用Maven

<dependency>
<groupId>com.zhazhapan</groupId>
<artifactId>util</artifactId>
<version>1.1.2</version>
</dependency>

或手动导入:点我下载

GitHub地址Gitee地址

功能

1. JSON快速解析,基于fastjson

使用

// 1. 导包importcom.zhazhapan.config.JsonParser;
Stringjson = "{key1:test,key2:{child1:node1,child2:node2},key3:[{fast:json1},{fast:json2}],key4:[arr1,arr2]}";
// 2. 新建一个解析对象// 2.1 使用json字符串JsonParserjsonParser = newJsonParser(json, false);
// 2.2 或使用文件路径(可能抛出IO异常)JsonParserjsonParser = newJsonParser("/Users/pantao/Desktop/test.json");
// 2.3 或使用URL对象JsonParserjsonParser = newJsonParser(newURL("http://somehost.com/sometext.json"));
// 3. 愉快的使用Stringstr = jsonParser.getString("key3[1].fast");
Stringstr1 = jsonParser.getString("key4[1]");
JSONObjectjsonObject = jsonParser.getObject("key3[0]");
JSONArrayjsonArray = jsonParser.getArray("key4");
// 或使用JSONPath路径语法Objectobject = jsonParser.eval("$.key2.child1");
// 4. 修改指定路径值jsonParser.set("key1", "test_set_value");
// 5. 删除指定路径值jsonParser.remove("key1");
// 6. 指定路径是否包含某个值booleanb = jsonParser.containsValue("key1", "test");
// 7. 返回并格式化JSONjsonParser.toString();

备注:fastjson jsonpath路径语法

2. 简单计算器

使用

// 1. 导包importcom.zhazhapan.util.Calculator;
// 2. 设置(如果没有设置将使用默认的精度)计算精度(即保存多少位小数)Calculator.setPrecision(5);
// 3. 计算(有可能抛出计算式不合法的异常)Stringformula = "(23-9*7)/22+2(35-45+56/(12-9+4*(22/10-2)))";
BigDecimalbd = Calculator.calculate(formula);
doubleres = db.doubleValue();

3. 网络文件下载

使用

// 1. 导包importcom.zhazhapan.util.Downloader;
// 2. 下载StringstoragePath = "/Users/pantao/Desktop";
Downloader.download(storagePath, "http://oq3iwfipo.bkt.clouddn.com/tools/zhazhapan/util.jar");

4. 简单的读写文件

使用

// 1. 导包importcom.zhazhapan.util.FileExecutor;
// 2. 写文件(可能抛出IO异常)Stringwrite = "write something";
FileExecutor.saveFile("/Users/pantao/Desktop/test.txt", write, false);
// 3. 读文件(可能抛出IO异常)Stringread = FileExecutor.readFile("/Users/pantao/Desktop/test.txt");
// 4. 批量复制文件夹FileExecutor.copyDirectories(newString[] { "/Users/pantao/Desktop/test" }, "/Users/pantao/Desktop/new");
// 5. 批量复制文件FileExecutor.copyFiles(newString[] { "/Users/pantao/Desktop/qiniu.jar" }, "/Users/pantao/Desktop/test");
// 6. 批量重命名文件String[] files = newString[] { "/Users/pantao/Desktop/test/Dump20171220_3.sql", "/Users/pantao/Desktop/test/Dump20171220_4.sql" };
FileExecutor.renameFiles(files, newString[] { "test_rename_1", "test_rename_2.txt" });
// 7. 拆分文件,通过拆分点拆分FileExecutor.splitFile("/Users/pantao/Desktop/test/Dump20171220.sql", newlong[] { 1000, 2000, 3000 });
// 8. 合并文件String[] files = newString[] { "/Users/pantao/Desktop/test/Dump20171220_1.sql", "/Users/pantao/Desktop/test/Dump20171220_2.sql" };
FileExecutor.mergeFiles(files, "/Users/pantao/Desktop/test/test_merge.sql", "");
// 9. 创建文件(如果存在则删除)FileExecutor.createNewFile("test.txt");
// 10. 删除文件或文件夹(递归删除)FileExecutor.deleteFile("/Users/pantao/Desktop/test/test_merge.sql");
// 11. 扫描文件夹下面所有的文件(返回一个文件列表)FileExecutor.scanFolder("/Users/Pantao/Desktop");
// 12. 创建文件,如果文件不存在的话FileExecutor.createFile("test.txt");

5. 简单的线程池

使用

// 1. 导包importcom.zhazhapan.util.ThreadPool;
// 2. 初始化线程池// 2.1 方式一ThreadPool.setCorePoolSize(1);
ThreadPool.setMaximumPoolSize(5);
ThreadPool.setKeepAliveTime(100);
ThreadPool.setTimeUnit(TimeUnit.MILLISECONDS);
ThreadPool.init();
// 2.2 方式二ThreadPool.init(1, 5, 100, TimeUnit.MILLISECONDS);
// 3. 使用线程池ThreadPool.executor.submit(() -> {
//do somthing here
});
// 4. 或者新建线程池ThreadPoolthreadPool = newThreadPool(1, 5, 100, TimeUnit.MILLISECONDS);
// 4.1 使用新建的线程池threadPool.newExecutor.submit(() -> {
//do somthing here
});

6. 简单的加密与解密

// 提供一些Java常用的加密(包括md5,base64,sha等加密)importcom.zhazhapan.util.decryption.JavaEncrypt;
// 如何使用Stringcode = JavaEncrypt.md5("this is a md5 encrypt method");
Stringsha256 = JavaEncrypt.sha256("123456");
// 主要是base64解密importcom.zhazhapan.util.decryption.JavaDecrypt;
// 异或加密和ascii加密importcom.zhazhapan.util.decryption.SimpleEncryt;
// 如何使用Stringcode = SimpleEncryt.ascii("simple encrypt", "key");
// 异或解密和ascii解密importcom.zhazhapan.util.decryption.SimpleDecrypt;

7. 弹窗(使用JavaFX,JDK最低要求1.8)

使用

// 1. 导入importcom.zhazhapan.util.dialog.Alerts;
// 2. 弹窗并接收返回的信息Optional<ButtonType> result = Alerts.showConfirmation("title", "some information");
if (result.get() == ButtonType.OK) {
// do something here
} else {
// do something here
}
// 3. 其他类型的弹窗基本上跟上面的操作一样// 4. 弹出输入框// 4.1 导包importcom.zhazhapan.util.dialog.Dialogs;
// 4.2 弹出并接收返回的内容(如果用户点击取消将返回null)Stringmsg = Dialogs.showInputDialog("title", "header", "content", "default value");

8. com.zhazhapan.util.Checker

所有参数均不用考虑为null的情况,Checker会处理

方法名简要说明
isSorted检查数组是否是升序或降序
isDate是否是日期格式
replace替换字符串
isEmail是否是邮箱格式
isDecimal是否是数字(包括小数)格式
isNumber是否是整数
isNull对象是否为null
isNotNull对象是否不为null
isNullOrEmpty字符串是否为null或空
isNotEmpty是否不为null且不为空
checkNull检测字符串是否为null,如果是,返回空字符串,否则返回原字符串
isEmpty列表或集合是否为空
isHyperLink是否是超链接(URL)
checkDate检测日期是否为null,如果是,返回当前日期,否则返回原日期
isWindows判断当前系统是否是Windows
isMacOS判断当前系统是否是Mac
isLinux判断当前系统是否是Linux
isLimited判断字符串的长度是否在某个范围
isImage判断文件是否是图片

9. com.zhazhapan.util.Formatter

方法名简要说明
stringToInt将字符串转换为Integer
formatSize格式化文件大小为KB、MB、GB、TB格式
sizeToLong将格式化后的文件大小转换为单位为B(字节)的long型
stringToDouble字符串转换为Double
stringToLong字符串转换为Long
customFormatDecimal将Double转换为自定义格式的字符串
formatDecimal将Double转换为默认格式(#0.00)的字符串
timeStampToString将时间戳转换为“yyyy-MM-dd HH:mm:ss”格式的字符串
formatJson将json文本转换为标准格式的json
dateToString将日期转换为“yyyy-MM-dd”格式的字符串
datetimeToString将日期转换为“yyyy-MM-dd HH:mm:ss”格式的字符串
getFileName从路径(包括网络路径)中获取文件名
stringToFloat将字符串转换为Float
stringToInteger同stringToInt
stringToDate将字符串转换为“yyyy-MM-dd”格式的日期
stringToLongTime将字符串转换为“HH:mm:ss”格式的日期
stringToShortTime将字符串转换为“HH:mm”格式的日期
stringToCustomDateTime将字符串转换为自定义格式的日期
stringToDatetime将字符串转换为“yyyy-MM-dd HH:mm:ss”格式的日期
toLocalDate将日期转换为“yyyy年MM月dd日”格式的字符串
longTimeToString将日期转换为“HH:mm:ss”格式的字符串
shortTimeToString将日期转换为“HH:mm”格式的字符串
datetimeToCustomString将日期转换为自定义格式的字符串
numberFormat将数字格式化为指定长度的字符串(不足用0补齐)
localDateToDate将java.time.LocalDate转换为java.util.Date
dateToLocalDate将java.util.Date转换为java.time.LocalDate
listToJson将List转换为JSON
mapToJson将Map转换为JSON
getFileSuffix获取文件后缀名

10. com.zhazhapan.util.Utils

方法名简要说明
extractDouble从字符串中提取数字并转换为Double
extractFloat从字符串中提取数字并转换为Float
extractShort从字符串中提取数字并转换为Short
extractLong从字符串中提取数字并转换为Long
extractInt从字符串中提取数字并转换为Integer
extractDigit从字符串中提取出数字,包括最后一个“.”号
maxLengthString返回多个字符串中长度最长的字符串
copyToClipboard复制字符串至系统剪贴板
openLink使用系统默认的浏览器打开超链接
openFile使用系统默认的方式打开文件
getMaxValue从多个数字中获取最大值
getCurrentOS()获取当前系统名称

11. com.zhazhapan.util.ArrayUtils

方法名简要说明
heapSort堆排序
mergeSort归并排序
shellSort希尔排序
selectSort选择排序
quickSort快速排序
insertSort插入排序
bubbleSort冒泡排序
unique数组去重
concatArrays合并多个数组
mergeSortedArrays将两个已经排好序(同序)的数组合并一个有序数组

12. com.zhazhapan.util.DateUtils

方法名简要说明
getWeekAsChinese获取某个日期的星期,返回一个中文字符串
getWeek获取某个日期的星期,返回一个整型
addHour某个日期后推多少个小时
addMinute某个日期后推多少个分钟
addSecond某个日期后推多少个秒
addYear某个日期后推多少个年
addMonth某个日期后推多少个月
addDay某个日期后推多少个天
getCurrentMonth()获取当前月份
getDay获取日期
getMonth获取月份
getYear获取年份

13. 发送邮件

// 导包importcom.zhazhapan.util.MailSender;
// 如何使用,下面的key指的是开启了POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,生成的授权码MailSender.config("smtp.qq.com", "zhazhapan", "735817834@qq.com", "key");
MailSender.sendMail("tao@zhazhapan.com", "title", "this is a test email");

14. com.zhazhapan.util.RandomUtils

方法名简要说明
getRandomDouble获取一个随机的双精度类型
getRandomInteger获取一个随机的整型
getRandomIntegerIgnoreRange获取一个可以忽略某个区间的随机整型
getRandomColor获取一个随机的颜色
getRandomEmail获取一个随机邮箱
getRandomString获取一个随机字符串
getRandomStringWithoutSymbol获取一个只有数字和字母的随机字符串
getRandomStringOnlyLetter获取一个只有字母的随机字符串
getRandomStringOnlyLowerCase获取一个只有小写字母的随机字符串
getRandomStringOnlyUpperCase获取一个只有大写字母的随机字符串
getRandomTextIgnoreRange获取一个可以忽略某个范围字符的随机字符串
getRandomText获取一个字符串

15. JSON与Bean互相转换

Bean转JSON

// 一个Bean类// 也可以不用注解@ToJsonString(type = JsonType.PRETTY, modifier = FieldModifier.PRIVATE, method = JsonMethod.HANDLE)
publicclassUser {
publicintid;
privateStringname;
privateDatebirth;
publicUser() {}
publicUser(intid, Stringname, Datebirth) {
this.id = id;
this.name = name;
this.birth = birth;
}
@OverridepublicStringtoString() {
try {
// 1. 不使用注解returnBeanUtils.toJsonString(this);
// 2. 使用注解returnBeanUtils.toJsonStringByAnnotation(this);
} catch (IllegalAccessExceptione) {
returne.getMessage();
}
}
}
// 外部类调用Useruser = newUser(1, "test", newDate());
System.out.println(user.toString());
// 不使用注解的输出
{"name":"test","birth":1516429105846,"id":1}
// 使用注解的输出
{
"name": "test",
"birth": "Sat Jan 20 14:18:25 CST 2018"
}

JSON转Bean

BeanUtils.jsonPutIn(jsonObject, bean);

16. com.zhazhapan.util.NetUtils

方法名简要说明
getDataOfUrl获取URL对应的网页内容
getInputStreamOfUrl获取URL对应的InputStream对象
getInputStreamOfConnection获取HttpURLConnection对应的InputStream对象
evaluateXPath解析HTML内容
getHtmlFromUrl获取网页内容
getDocumentFromUrl获取HTML文档
getComputerName获取计算机名
getSystemName获取系统名称
getSystemArch获取系统架构
getSystemVersion获取系统版本
getMacAddress获取Mac地址
getPublicIpAndLocation获取公网IP和归属地
getLocalIp获取本地ip地址
getLocationByIp获取ip归属地

17. com.zhazhapan.util.ReflectUtils

方法名简要说明
scanPackage扫描包下面所有的类
invokeMethod通过反射调用方法
getTypes获取对象集的所有类型
getBasicTypes获取所有对象的基本类型
invokeMethodUseBasicType使用基本类型调用方法

18. com.zhazhapan.util.HttpUtils

方法名简要说明
getCookie通过名称获取Cookie