ProxyUtil
代理工具类
方法 | 介绍 |
---|---|
newProxyInstance(ClassLoader classloader, InvocationHandler invocationHandler, Class<?>... interfaces) | 创建动态代理对象 动态代理对象的创建原理是: 假设创建的代理对象名为 Proxy0类load 3、调用Proxy0(InvocationHandler)构造函数 创建Proxy0的实例返回给客户端。 5、当调用代理类的相应方法时,相当于调用 InvocationHandler.invoke(Object, java.lang.reflect.Method, Object[]) 方法 |
newProxyInstance(InvocationHandler invocationHandler, Class<?>... interfaces) | 创建动态代理对象 |
proxy(T target, Aspect aspect) | 使用切面代理对象 |
proxy(T target, Class<? extends Aspect> aspectClass) | 使用切面代理对象 |
BloomFilterUtil
布隆过滤器工具
方法 | 介绍 |
---|---|
createBitMap(int m) | 创建BitMap实现的布隆过滤器 |
createBitSet(int c, int n, int k) | 创建一个BitSet实现的布隆过滤器,过滤器的容量为c * n 个bit. |
CacheUtil
缓存工具类
方法 | 介绍 |
---|---|
newFIFOCache(int capacity) | 创建FIFO(first in first out) 先进先出缓存. |
newFIFOCache(int capacity, long timeout) | 创建FIFO(first in first out) 先进先出缓存. |
newLFUCache(int capacity) | 创建LFU(least frequently used) 最少使用率缓存. |
newLFUCache(int capacity, long timeout) | 创建LFU(least frequently used) 最少使用率缓存. |
newLRUCache(int capacity) | 创建LRU (least recently used)最近最久未使用缓存. |
newLRUCache(int capacity, long timeout) | 创建LRU (least recently used)最近最久未使用缓存. |
newNoCache() | 创建无缓存实现. |
newTimedCache(long timeout) | 创建定时缓存. |
newWeakCache(long timeout) | 创建弱引用缓存. |
CaptchaUtil
图形验证码工具
方法 | 介绍 |
---|---|
createCircleCaptcha(int width, int height) | 创建圆圈干扰的验证码,默认5位验证码,15个干扰圈 |
createCircleCaptcha(int width, int height, int codeCount, int circleCount) | 创建圆圈干扰的验证码 |
createGifCaptcha(int width, int height) | 创建GIF验证码 |
createGifCaptcha(int width, int height, int codeCount) | 创建GIF验证码 |
createLineCaptcha(int width, int height) | 创建线干扰的验证码,默认5位验证码,150条干扰线 |
createLineCaptcha(int width, int height, int codeCount, int lineCount) | 创建线干扰的验证码 |
createShearCaptcha(int width, int height) | 创建扭曲干扰的验证码,默认5位验证码 |
createShearCaptcha(int width, int height, int codeCount, int thickness) | 创建扭曲干扰的验证码,默认5位验证码 |
AnnotationUtil
注解工具类
快速获取注解对象、注解值等工具封装
BeanUtil
Bean工具类
CollectionUtil
集合相关工具类,包括数组,是
CollUtil
的别名工具类类
方法 | 介绍 |
---|
CollStreamUtil
集合的stream操作封装
方法 | 介绍 |
---|---|
group2Map(Collection |
将collection按照两个规则(比如有相同的年级id,班级id)分类成双层map Collection |
groupBy2Key(Collection |
将collection按照两个规则(比如有相同的年级id,班级id)分类成双层map Collection |
groupByKey(Collection |
将collection按照规则(比如有相同的班级id)分类成map Collection |
merge(Map<K,X> map1, Map<K,Y> map2, BiFunction<X,Y,V> merge) | 合并两个相同key类型的map |
toIdentityMap(Collection |
将collection转化为类型不变的map Collection |
toList(Collection |
将collection转化为List集合,但是两者的泛型不同 Collection |
toMap(Collection |
将Collection转化为map(value类型与collection的泛型不同) Collection |
toSet(Collection |
将collection转化为Set集合,但是两者的泛型不同 Collection |
CollUtil
集合相关工具类
IterUtil
ListUtil
List相关工具类
RingIndexUtil
集合索引环形获取工具类
方法 | 介绍 |
---|---|
ringNextInt(int modulo, AtomicInteger atomicInteger) | 通过cas操作 实现对指定值内的回环累加 |
ringNextIntByObj(Object object, AtomicInteger atomicInteger) | 通过cas操作 实现对指定值内的回环累加 |
ringNextLong(long modulo, AtomicLong atomicLong) | 通过cas操作 实现对指定值内的回环累加 |
SpliteratorUtil
Spliterator
相关工具类
方法 | 介绍 |
---|---|
trans(Spliterator |
使用给定的转换函数,转换源Spliterator为新类型的Spliterator |
CompareUtil
Bean字段排序器
参阅feilong-core中的PropertyComparator
方法 | 介绍 |
---|---|
compare(T c1, T c2) | null安全的对象比较,null对象小于任何对象 |
compare(T o1, T o2, boolean isNullGreater) | 自然比较两个对象的大小,比较规则如下: |
compare(T c1, T c2, boolean isNullGreater) | null安全的对象比较 |
compare(T c1, T c2, Comparator |
对象比较,比较结果取决于comparator,如果被比较对象为null,传入的comparator对象应处理此情况 如果传入comparator为null,则使用默认规则比较(此时被比较对象必须实现Comparable接口) |
comparingPinyin(Function<T,String> keyExtractor) | 中文比较器 |
comparingPinyin(Function<T,String> keyExtractor, boolean reverse) | 中文比较器 |
CompilerUtil
源码编译工具类,主要封装
JavaCompiler
相关功能
方法 | 介绍 |
---|---|
compile(String... sourceFiles) | 编译指定的源码文件 |
getCompiler(ClassLoader parent) | 获取JavaSourceCompiler |
getFileManager() | 获取StandardJavaFileManager |
getFileManager(DiagnosticListener<? super JavaFileObject> diagnosticListener) | 获取StandardJavaFileManager |
getTask(JavaFileManager fileManager, DiagnosticListener<? super JavaFileObject> diagnosticListener, Iterable |
新建编译任务 |
DiagnosticUtil
诊断工具类
方法 | 介绍 |
---|---|
getMessages(DiagnosticCollector<?> collector) | 获取DiagnosticCollector收集到的诊断信息,以文本返回 |
JavaFileObjectUtil
JavaFileObject
相关工具类封装
方法 | 介绍 |
---|---|
getJavaFileObjects(File file) | 获取指定文件下的所有待编译的java文件,并以JavaFileObject形式返回 |
isJarOrZipFile(String fileName) | 是否是jar 或 zip 文件 |
isJavaFile(String fileName) | 是否是java文件 |
CalendarUtil
针对
Calendar
对象封装工具类
DateUtil
时间工具类
LocalDateTimeUtil
JDK8+中的
LocalDateTime
工具类封装
TemporalAccessorUtil
TemporalAccessor
工具类封装
方法 | 介绍 |
---|---|
format(TemporalAccessor time, DateTimeFormatter formatter) | 格式化日期时间为指定格式 |
format(TemporalAccessor time, String format) | 格式化日期时间为指定格式 |
get(TemporalAccessor temporalAccessor, TemporalField field) | 安全获取时间的某个属性,属性不存在返回0 |
toEpochMilli(TemporalAccessor temporalAccessor) | TemporalAccessor转换为 时间戳(从1970-01-01T00:00:00Z开始的毫秒数) |
toInstant(TemporalAccessor temporalAccessor) | TemporalAccessor转换为 Instant对象 |
TemporalUtil
Temporal
工具类封装
方法 | 介绍 |
---|---|
between(Temporal startTimeInclude, Temporal endTimeExclude) | 获取两个日期的差,如果结束时间早于开始时间,获取结果为负。 |
between(Temporal startTimeInclude, Temporal endTimeExclude, ChronoUnit unit) | 获取两个日期的差,如果结束时间早于开始时间,获取结果为负。 |
ZoneUtil
方法 | 介绍 |
---|---|
toTimeZone(ZoneId zoneId) | ZoneId转换为TimeZone,null则返回系统默认值 |
toZoneId(TimeZone timeZone) | TimeZone转换为ZoneId,null则返回系统默认值 |
ExceptionUtil
异常工具类
FontUtil
AWT中字体相关工具类
方法 | 介绍 |
---|---|
createFont() | 创建默认字体 |
createFont(File fontFile) | 根据文件创建字体 首先尝试创建Font.TRUETYPE_FONT字体,此类字体无效则创建Font.TYPE1_FONT |
createFont(InputStream fontStream) | 根据文件创建字体 首先尝试创建Font.TRUETYPE_FONT字体,此类字体无效则创建Font.TYPE1_FONT |
createFont(String name, int size) | 创建指定名称的字体 |
createSansSerifFont(int size) | 创建SansSerif字体 |
getDimension(FontMetrics metrics, String str) | 获得字体对应字符串的长宽信息 |
GraphicsUtil
Graphics
相关工具类
方法 | 介绍 |
---|---|
createGraphics(BufferedImage image, Color color) | 创建Graphics2D |
drawImg(Graphics g, Image img, Point point) | 绘制图片 |
drawImg(Graphics g, Image img, Rectangle rectangle) | 绘制图片 |
drawString(Graphics g, String str, Font font, Color color, int width, int height) | 绘制字符串,默认抗锯齿 |
drawString(Graphics g, String str, Font font, Color color, Point point) | 绘制字符串,默认抗锯齿 |
drawString(Graphics g, String str, Font font, Color color, Rectangle rectangle) | 绘制字符串,默认抗锯齿。 此方法定义一个矩形区域和坐标,文字基于这个区域中间偏移x,y绘制。 |
drawStringColourful(Graphics g, String str, Font font, int width, int height) | 绘制字符串,使用随机颜色,默认抗锯齿 |
getCenterY(Graphics g, int backgroundHeight) | 获取文字居中高度的Y坐标(距离上边距距离) 此方法依赖FontMetrics,如果获取失败,默认为背景高度的1/3 |
setAlpha(Graphics2D g, float alpha) | 设置画笔透明度 |
ImgUtil
图片处理工具类:
功能:缩放图像、切割图像、旋转、图像类型转换、彩色转黑白、文字水印、图片水印等
参考:http://blog.csdn.net/zhangzhikaixinya/article/details/8459400
BufferUtil
ByteBuffer
工具类
此工具来自于 t-io 项目以及其它项目的相关部分收集
ByteBuffer的相关介绍见:https://www.cnblogs.com/ruber/p/6857159.html
方法 | 介绍 |
---|---|
copy(ByteBuffer src, ByteBuffer dest) | 拷贝ByteBuffer |
copy(ByteBuffer src, ByteBuffer dest, int length) | 拷贝ByteBuffer |
copy(ByteBuffer src, int srcStart, ByteBuffer dest, int destStart, int length) | 拷贝ByteBuffer |
copy(ByteBuffer src, int start, int end) | 拷贝到一个新的ByteBuffer |
create(byte[] data) | 创建新Buffer |
create(CharSequence data, Charset charset) | 从字符串创建新Buffer |
createCharBuffer(int capacity) | 创建CharBuffer |
createUtf8(CharSequence data) | 从字符串创建新Buffer,使用UTF-8编码 |
lineEnd(ByteBuffer buffer) | 一行的末尾位置,查找位置时位移ByteBuffer到结束位置 |
lineEnd(ByteBuffer buffer, int maxLength) | 一行的末尾位置,查找位置时位移ByteBuffer到结束位置 支持的换行符如下: |
readBytes(ByteBuffer buffer) | 读取剩余部分bytes |
readBytes(ByteBuffer buffer, int maxLength) | 读取指定长度的bytes 如果长度不足,则读取剩余部分,此时buffer必须为读模式 |
readBytes(ByteBuffer buffer, int start, int end) | 读取指定区间的数据 |
readLine(ByteBuffer buffer, Charset charset) | 读取一行,如果buffer中最后一部分并非完整一行,则返回null 支持的换行符如下: |
readStr(ByteBuffer buffer, Charset charset) | 读取剩余部分并转为字符串 |
readUtf8Str(ByteBuffer buffer) | 读取剩余部分并转为UTF-8编码字符串 |
FileTypeUtil
文件类型判断工具类
方法 | 介绍 |
---|---|
getType(File file) | 根据文件流的头部信息获得文件类型 |
getType(InputStream in) | 根据文件流的头部信息获得文件类型 |
getType(InputStream in, String filename) | 根据文件流的头部信息获得文件类型 |
getType(String fileStreamHexHead) | 根据文件流的头部信息获得文件类型 |
getTypeByPath(String path) | 通过路径获得文件类型 |
putFileType(String fileStreamHexHead, String extName) | 增加文件类型映射 如果已经存在将覆盖之前的映射 |
removeFileType(String fileStreamHexHead) | 移除文件类型映射 |
FileUtil
文件工具类
IoUtil
IO工具类
IO工具类只是辅助流的读写,并不负责关闭流。原因是流可能被多次读写,读写关闭后容易造成问题。
ManifestUtil
Jar包中manifest.mf文件获取和解析工具类 来自Jodd
方法 | 介绍 |
---|---|
getManifest(Class<?> cls) | 根据 class 获取 所在 jar 包文件的 Manifest 此方法主要利用class定位jar包,如引入hutool-all,则传入hutool中任意一个类即可获取这个jar的Manifest信息 如果这个类不在jar包中,返回null |
getManifest(File classpathItem) | 获取 jar 包文件或项目目录下的 Manifest |
getManifest(JarFile jarFile) | 根据 JarURLConnection 获取 jar 包文件的 Manifest |
getManifest(JarURLConnection connection) | 根据 JarURLConnection 获取 jar 包文件的 Manifest |
NioUtil
NIO相关工具封装,主要针对Channel读写、拷贝等封装
FileNameUtil
文件名相关工具类
方法 | 介绍 |
---|---|
cleanInvalid(String fileName) | 清除文件名中的在Windows下不支持的非法字符,包括: \ / : * ? " < > |
containsInvalid(String fileName) | 文件名中是否包含在Windows下不支持的非法字符,包括: \ / : * ? " < > |
extName(File file) | 获取文件扩展名(后缀名),扩展名不带“.” |
extName(String fileName) | 获得文件的扩展名(后缀名),扩展名不带“.” |
getName(File file) | 返回文件名 |
getName(String filePath) | 返回文件名 |
getPrefix(File file) | 返回主文件名 |
getPrefix(String fileName) | 返回主文件名 |
getSuffix(File file) | 获取文件后缀名,扩展名不带“.” |
getSuffix(String fileName) | 获得文件后缀名,扩展名不带“.” |
isType(String fileName, String... extNames) | 根据文件名检查文件类型,忽略大小写 |
mainName(File file) | 返回主文件名 |
mainName(String fileName) | 返回主文件名 |
FileSystemUtil
FileSystem
相关工具类封装
参考:https://blog.csdn.net/j16421881/article/details/78858690
方法 | 介绍 |
---|---|
create(String path) | 创建 FileSystem |
createZip(String path) | 创建 Zip的FileSystem,默认UTF-8编码 |
createZip(String path, Charset charset) | 创建 Zip的FileSystem |
getRoot(FileSystem fileSystem) | 获取目录的根路径,或Zip文件中的根路径 |
PathUtil
NIO中Path对象操作封装
方法 | 介绍 |
---|---|
copy(Path src, Path target, CopyOption... options) | 拷贝文件或目录,拷贝规则为: 源文件为目录,目标也为目录或不存在,则拷贝整个目录到目标目录下 源文件为文件,目标为目录或不存在,则拷贝文件到目标目录下 源文件为文件,目标也为文件,则在StandardCopyOption.REPLACE_EXISTING情况下覆盖之 |
copyContent(Path src, Path target, CopyOption... options) | 拷贝目录下的所有文件或目录到目标目录中,此方法不支持文件对文件的拷贝。 源文件为目录,目标也为目录或不存在,则拷贝目录下所有文件和目录到目标目录下 源文件为文件,目标为目录或不存在,则拷贝文件到目标目录下 |
copyFile(Path src, Path target, CopyOption... options) | 通过JDK7+的 Files.copy(Path, Path, CopyOption...) 方法拷贝文件 此方法不支持递归拷贝目录,如果src传入是目录,只会在目标目录中创建空目录 |
copyFile(Path src, Path dest, StandardCopyOption... options) | 通过JDK7+的 Files.copy(Path, Path, CopyOption...) 方法拷贝文件 此方法不支持递归拷贝目录,如果src传入是目录,只会在目标目录中创建空目录 |
del(Path path) | 删除文件或者文件夹,不追踪软链 注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作 |
delFile(Path path) | 删除文件或空目录,不追踪软链 |
equals(Path file1, Path file2) | 检查两个文件是否是同一个文件 所谓文件相同,是指Path对象是否指向同一个文件或文件夹 |
exists(Path path, boolean isFollowLinks) | 判断文件或目录是否存在 |
getAttributes(Path path, boolean isFollowLinks) | 获取文件属性 |
getInputStream(Path path) | 获得输入流 |
getLastPathEle(Path path) | 获取指定位置的最后一个子路径部分 |
getMimeType(Path file) | 获得文件的MimeType |
getName(Path path) | 获取Path文件名 |
getOutputStream(Path path) | 获得输出流 |
getPathEle(Path path, int index) | 获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置 |
getReader(Path path, Charset charset) | 获得一个文件读取器 |
getUtf8Reader(Path path) | 获得一个文件读取器 |
isDirectory(Path path) | 判断是否为目录,如果file为null,则返回false 此方法不会追踪到软链对应的真实地址,即软链被当作文件 |
isDirectory(Path path, boolean isFollowLinks) | 判断是否为目录,如果file为null,则返回false |
isDirEmpty(Path dirPath) | 目录是否为空 |
isFile(Path path, boolean isFollowLinks) | 判断是否为文件,如果file为null,则返回false |
isSub(Path parent, Path sub) | 判断给定的目录是否为给定文件或文件夹的子目录 |
isSymlink(Path path) | 判断是否为符号链接文件 |
loopFiles(Path path, FileFilter fileFilter) | 递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果 |
loopFiles(Path path, int maxDepth, FileFilter fileFilter) | 递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果 |
mkdir(Path dir) | 创建所给目录及其父目录 |
mkParentDirs(Path path) | 创建所给文件或目录的父目录 |
move(Path src, Path target, boolean isOverride) | 移动文件或目录 当目标是目录时,会将源文件或文件夹整体移动至目标目录下 例如: move("/usr/aaa/abc.txt", "/usr/bbb")结果为:"/usr/bbb/abc.txt" move("/usr/aaa", "/usr/bbb")结果为:"/usr/bbb/aaa" |
moveContent(Path src, Path target, boolean isOverride) | 移动文件或目录内容到目标目录中,例如: moveContent("/usr/aaa/abc.txt", "/usr/bbb")结果为:"/usr/bbb/abc.txt" moveContent("/usr/aaa", "/usr/bbb")结果为:"/usr/bbb" |
readBytes(Path path) | 读取文件的所有内容为byte数组 |
rename(Path path, String newName, boolean isOverride) | 修改文件或目录的文件名,不变更路径,只是简单修改文件名 |
subPath(Path path, int fromIndex, int toIndex) | 获取指定位置的子路径部分,支持负数,例如起始为-1表示从后数第一个节点位置 |
toAbsNormal(Path path) | 将Path路径转换为标准的绝对路径 |
walkFiles(Path start, FileVisitor<? super Path> visitor) | 遍历指定path下的文件并做处理 |
walkFiles(Path start, int maxDepth, FileVisitor<? super Path> visitor) | 遍历指定path下的文件并做处理 |
ResourceUtil
Resource资源工具类
方法 | 介绍 |
---|---|
getReader(String resource, Charset charset) | 从ClassPath资源中获取BufferedReader |
getResource(String resource) | 获得资源的URL 路径用/分隔,例如: |
getResource(String resource, Class<?> baseClass) | 获得资源相对路径对应的URL |
getResourceIter(String resource) | 获取指定路径下的资源Iterator 路径格式必须为目录格式,用/分隔,例如: |
getResourceObj(String path) | 获取Resource 资源对象 如果提供路径为绝对路径或路径以file:开头,返回FileResource,否则返回ClassPathResource |
getResources(String resource) | 获取指定路径下的资源列表 路径格式必须为目录格式,用/分隔,例如: |
getStream(String resource) | 从ClassPath资源中获取InputStream |
getStreamSafe(String resource) | 从ClassPath资源中获取InputStream,当资源不存在时返回null |
getUtf8Reader(String resource) | 从ClassPath资源中获取BufferedReader |
readBytes(String resource) | 读取Classpath下的资源为byte[] |
readStr(String resource, Charset charset) | 读取Classpath下的资源为字符串 |
readUtf8Str(String resource) | 读取Classpath下的资源为字符串,使用UTF-8编码 |
DataSizeUtil
数据大小工具类
方法 | 介绍 |
---|---|
format(long size) | 可读的文件大小 参考 http://stackoverflow.com/questions/3263892/format-file-size-as-mb-gb-etc |
parse(String text) | 解析数据大小字符串,转换为bytes大小 |
WatchUtil
监听工具类
主要负责文件监听器的快捷创建
CallerUtil
调用者。可以通过此类的方法获取调用者、多级调用者以及判断是否被调用
方法 | 介绍 |
---|---|
getCaller() | 获得调用者 |
getCaller(int depth) | 获得调用者,指定第几级调用者 调用者层级关系: |
getCallerCaller() | 获得调用者的调用者 |
getCallerMethodName(boolean isFullName) | 获取调用此方法的方法名 |
isCalledBy(Class<?> clazz) | 是否被指定类调用 |
LambdaUtil
Lambda相关工具类
方法 | 介绍 |
---|---|
getFieldName(Func1<T,?> func) | 获取lambda表达式Getter或Setter函数(方法)对应的字段名称,规则如下: getXxxx获取为xxxx,如getName得到name。 setXxxx获取为xxxx,如setName得到name。 isXxxx获取为xxxx,如isName得到name。 其它不满足规则的方法名抛出IllegalArgumentException |
getMethodName(Func1<T,?> func) | 获取lambda表达式函数(方法)名称 |
resolve(Func1<T,?> func) | 解析lambda表达式,加了缓存。 该缓存可能会在任意不定的时间被清除 |
InternUtil
规范化对象生成工具
方法 | 介绍 |
---|---|
createJdkInterner() | 创建JDK默认实现的字符串规范化器 |
createStringInterner(boolean isWeak) | 创建字符串规范化器 |
createWeakInterner() | 创建WeakHshMap实现的字符串规范化器 |
MethodHandleUtil
方法句柄
MethodHandle
封装工具类
参考: https://stackoverflow.com/questions/22614746/how-do-i-invoke-java-8-default-methods-reflectively
方法 | 介绍 |
---|---|
findConstructor(Class> callerClass, Class>... args) | 查找指定的构造方法 |
findConstructor(Class<?> callerClass, MethodType type) | 查找指定的构造方法 |
findMethod(Class<?> callerClass, String name, MethodType type) | 查找指定方法的方法句柄 此方法只会查找: 当前类的方法(包括构造方法和private方法) 父类的方法(包括构造方法和private方法) 当前类的static方法 |
invoke(boolean isSpecial, Object obj, Method method, Object... args) | 执行接口或对象中的方法 interface Duck { default String quack() { return "Quack"; } } Duck duck = (Duck) Proxy.newProxyInstance( ClassLoaderUtil.getClassLoader(), new Class[] { Duck.class }, MethodHandleUtil::invoke); |
invoke(Object obj, Method method, Object... args) | 执行接口或对象中的方法 |
invokeSpecial(Object obj, Method method, Object... args) | 执行接口或对象中的方法 interface Duck { default String quack() { return "Quack"; } } Duck duck = (Duck) Proxy.newProxyInstance( ClassLoaderUtil.getClassLoader(), new Class[] { Duck.class }, MethodHandleUtil::invoke); |
invokeSpecial(Object obj, String methodName, Object... args) | 执行接口或对象中的方法 interface Duck { default String quack() { return "Quack"; } } Duck duck = (Duck) Proxy.newProxyInstance( ClassLoaderUtil.getClassLoader(), new Class[] { Duck.class }, MethodHandleUtil::invokeDefault); |
lookup(Class<?> callerClass) | jdk8中如果直接调用MethodHandles.lookup()获取到的MethodHandles.Lookup在调用findSpecial和unreflectSpecial 时会出现权限不够问题,抛出"no private access for invokespecial"异常,因此针对JDK8及JDK9+分别封装lookup方法。 |
TreeUtil
树工具类
方法 | 介绍 |
---|---|
build(List |
树构建 |
build(List |
树构建 |
build(List<TreeNode |
树构建 |
build(List<TreeNode |
树构建 |
build(Map<E,Tree |
树构建,按照权重排序 |
buildSingle(List |
构建单root节点树 |
buildSingle(List |
构建单root节点树 |
buildSingle(List<TreeNode |
构建单root节点树 |
buildSingle(List<TreeNode |
构建单root节点树 |
buildSingle(Map<E,Tree |
单点树构建,按照权重排序 |
createEmptyNode(E id) | 创建空Tree的节点 |
getNode(Tree |
获取ID对应的节点,如果有多个ID相同的节点,只返回第一个。 此方法只查找此节点及子节点,采用递归深度优先遍历。 |
getParentsName(Tree |
获取所有父节点名称列表 |
MapUtil
Map相关工具类
BitStatusUtil
通过位运算表示状态的工具类
参数必须是偶数
且大于等于0
! 工具实现见博客:https://blog.starxg.com/2020/11/bit-status/
方法 | 介绍 |
---|---|
add(int states, int stat) | 增加状态 |
clear() | 清空状态就是0 |
has(int states, int stat) | 判断是否含有状态 |
remove(int states, int stat) | 删除一个状态 |
MathUtil
数学相关方法工具类
此工具类与NumberUtil
属于一类工具,NumberUtil偏向于简单数学计算的封装,MathUtil偏向复杂数学计算
方法 | 介绍 |
---|---|
arrangementCount(int n) | 计算排列数,即A(n, n) = n! |
arrangementCount(int n, int m) | 计算排列数,即A(n, m) = n!/(n-m)! |
arrangementSelect(String[] datas) | 全排列选择(列表全部参与排列) |
arrangementSelect(String[] datas, int m) | 排列选择(从列表中选择n个排列) |
centToYuan(long cent) | 金额分转换为元 |
combinationCount(int n, int m) | 计算组合数,即C(n, m) = n!/((n-m)! * m!) |
combinationSelect(String[] datas, int m) | 组合选择(从列表中选择n个组合) |
yuanToCent(double yuan) | 金额元转换为分 |
Ipv4Util
IPV4地址工具类
方法 | 介绍 |
---|---|
countByIpRange(String fromIp, String toIp) | 计算IP区间有多少个IP |
countByMaskBit(int maskBit, boolean isAll) | 计算子网大小 |
formatIpBlock(String ip, String mask) | 格式化IP段 |
getBeginIpStr(String ip, int maskBit) | 根据 ip/掩码位 计算IP段的起始IP(字符串型) 方法别名:inet_ntoa |
getEndIpStr(String ip, int maskBit) | 根据 ip/掩码位 计算IP段的终止IP(字符串型) |
getMaskBitByMask(String mask) | 根据子网掩码转换为掩码位 |
getMaskByIpRange(String fromIp, String toIp) | 根据开始IP与结束IP计算掩码 |
getMaskByMaskBit(int maskBit) | 根据掩码位获取掩码 |
ipv4ToLong(String strIP) | 根据ip地址(xxx.xxx.xxx.xxx)计算出long型的数据 方法别名:inet_aton |
isMaskBitValid(int maskBit) | 判断掩码位是否合法 |
isMaskValid(String mask) | 判断掩码是否合法 |
list(String ipRange, boolean isAll) | 智能转换IP地址集合 |
list(String ip, int maskBit, boolean isAll) | 根据IP地址、子网掩码获取IP地址区间 |
list(String ipFrom, String ipTo) | 得到IP地址区间 |
longToIpv4(long longIP) | 根据long值获取ip v4地址:xx.xx.xx.xx |
NetUtil
网络相关工具
SSLUtil
SSL(Secure Sockets Layer 安全套接字协议)相关工具封装
方法 | 介绍 |
---|---|
createSSLContext(String protocol) | 创建SSLContext,默认新人全部 |
createSSLContext(String protocol, KeyManager[] keyManagers, TrustManager[] trustManagers) | 创建和初始化SSLContext |
createSSLContext(String protocol, KeyManager keyManager, TrustManager trustManager) | 创建SSLContext |
URLEncodeUtil
URL编码工具
方法 | 介绍 |
---|---|
encode(String url) | 编码URL,默认使用UTF-8编码 将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头。 此方法用于URL自动编码,类似于浏览器中键入地址自动编码,对于像类似于“/”的字符不再编码 |
encode(String url, Charset charset) | 编码字符为 application/x-www-form-urlencoded 将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头。 此方法用于URL自动编码,类似于浏览器中键入地址自动编码,对于像类似于“/”的字符不再编码 |
encodeAll(String url) | 编码URL,默认使用UTF-8编码 将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头。 |
encodeAll(String url, Charset charset) | 编码URL 将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头。 |
encodeFragment(String url) | 编码URL,默认使用UTF-8编码 URL的Fragment URLEncoder 默认的编码器针对Fragment,定义如下: |
encodeFragment(String url, Charset charset) | URL的Fragment URLEncoder 默认的编码器针对Fragment,定义如下: |
encodePathSegment(String url) | 编码URL,默认使用UTF-8编码 将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头。 此方法用于URL的Segment中自动编码,转义大部分特殊字符 |
encodePathSegment(String url, Charset charset) | 编码字符为URL中查询语句 将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头。 此方法用于URL的Segment中自动编码,转义大部分特殊字符 |
encodeQuery(String url) | 编码URL,默认使用UTF-8编码 将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头。 此方法用于POST请求中的请求体自动编码,转义大部分特殊字符 |
encodeQuery(String url, Charset charset) | 编码字符为URL中查询语句 将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头。 此方法用于POST请求中的请求体自动编码,转义大部分特殊字符 |
CollectorUtil
可变的汇聚操作
Collector
相关工具封装
方法 | 介绍 |
---|---|
joining(CharSequence delimiter) | 提供任意对象的Join操作的Collector实现,对象默认调用toString方法 |
joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix, Function<T,? extends CharSequence> toStringFunc) | 提供任意对象的Join操作的Collector实现 |
joining(CharSequence delimiter, Function<T,? extends CharSequence> toStringFunc) | 提供任意对象的Join操作的Collector实现 |
StreamUtil
Stream
工具类
方法 | 介绍 |
---|---|
join(Stream |
将Stream中所有元素以指定分隔符,合并为一个字符串,对象默认调用toString方法 |
join(Stream |
将Stream中所有元素以指定分隔符,合并为一个字符串 |
of(File file) | 按行读取文件为Stream |
of(File file, Charset charset) | 按行读取文件为Stream |
of(Iterable |
Iterable转换为Stream,默认非并行 |
of(Iterable |
Iterable转换为Stream |
of(Path path) | 按行读取文件为Stream |
of(Path path, Charset charset) | 按行读取文件为Stream |
of(T... array) | |
of(T seed, UnaryOperator |
通过函数创建Stream |
DesktopUtil
桌面相关工具(平台相关)
Desktop 类允许 Java 应用程序启动已在本机桌面上注册的关联应用程序,以处理 URI 或文件。
方法 | 介绍 |
---|---|
browse(String url) | 使用平台默认浏览器打开指定URL地址 |
browse(URI uri) | 使用平台默认浏览器打开指定URI地址 |
edit(File file) | 启动关联编辑器应用程序并打开用于编辑的文件 |
getDsktop() | 获得Desktop |
mail(String mailAddress) | 使用平台默认浏览器打开指定URL地址 |
open(File file) | 启动关联应用程序来打开文件 |
print(File file) | 使用关联应用程序的打印命令, 用本机桌面打印设备来打印文件 |
RobotUtil
Robot
封装工具类,提供截屏等工具
方法 | 介绍 |
---|---|
captureScreen() | 截取全屏 |
captureScreen(File outFile) | 截取全屏到文件 |
captureScreen(Rectangle screenRect) | 截屏 |
captureScreen(Rectangle screenRect, File outFile) | 截屏 |
click() | 模拟单击 鼠标单击包括鼠标左键的按下和释放 |
delay() | 等待指定毫秒数 |
getDelay() | 获取全局默认的延迟时间 |
getRobot() | 获取 Robot 单例实例 |
keyClick(int... keyCodes) | 模拟键盘点击 包括键盘的按下和释放 |
keyPressString(String str) | 打印输出指定字符串(借助剪贴板) |
keyPressWithAlt(int key) | alt+ 按键 |
keyPressWithCtrl(int key) | ctrl+ 按键 |
keyPressWithShift(int key) | shift+ 按键 |
mouseMove(int x, int y) | 模拟鼠标移动 |
mouseWheel(int wheelAmt) | 模拟鼠标滚轮滚动 |
rightClick() | 模拟右键单击 鼠标单击包括鼠标右键的按下和释放 |
setDelay(int delayMillis) | 设置默认的延迟时间 当按键执行完后的等待时间,也可以用ThreadUtil.sleep方法代替 |
ScreenUtil
屏幕相关(当前显示设置)工具类
方法 | 介绍 |
---|---|
captureScreen() | 截取全屏 |
captureScreen(File outFile) | 截取全屏到文件 |
captureScreen(Rectangle screenRect) | 截屏 |
captureScreen(Rectangle screenRect, File outFile) | 截屏 |
getHeight() | 获取屏幕高度 |
getRectangle() | 获取屏幕的矩形 |
getWidth() | 获取屏幕宽度 |
ClipboardUtil
系统剪贴板工具类
方法 | 介绍 |
---|---|
get(DataFlavor flavor) | 获取剪贴板内容 |
get(Transferable content, DataFlavor flavor) | 获取剪贴板内容 |
getClipboard() | 获取系统剪贴板 |
getImage() | 从剪贴板获取图片 |
getImage(Transferable content) | 从剪贴板的Transferable获取图片 |
getStr() | 从剪贴板获取文本 |
getStr(Transferable content) | 从剪贴板的Transferable获取文本 |
listen(ClipboardListener listener) | 监听剪贴板修改事件 |
listen(ClipboardListener listener, boolean sync) | 监听剪贴板修改事件 |
listen(int tryCount, long delay, ClipboardListener listener, boolean sync) | 监听剪贴板修改事件 |
set(Transferable contents) | 设置内容到剪贴板 |
set(Transferable contents, ClipboardOwner owner) | 设置内容到剪贴板 |
setImage(Image image) | 设置图片到剪贴板 |
setStr(String text) | 设置字符串文本到剪贴板 |
CharSequenceUtil
CharSequence
相关工具类封装
UnicodeUtil
提供Unicode字符串和普通字符串之间的转换
方法 | 介绍 |
---|---|
toString(String unicode) | Unicode字符串转为普通字符串 Unicode字符串的表现方式为:\uXXXX |
toUnicode(char c) | 字符编码为Unicode形式 |
toUnicode(int c) | 字符编码为Unicode形式 |
toUnicode(String str) | 字符串编码为Unicode形式 |
toUnicode(String str, boolean isSkipAscii) | 字符串编码为Unicode形式 |
CsvUtil
CSV写出配置项
方法 | 介绍 |
---|---|
getReader() | 获取CSV读取器,调用此方法创建的Reader须自行指定读取的资源 |
getReader(CsvReadConfig config) | 获取CSV读取器,调用此方法创建的Reader须自行指定读取的资源 |
getReader(Reader reader) | 获取CSV读取器 |
getReader(Reader reader, CsvReadConfig config) | 获取CSV读取器 |
getWriter(File file, Charset charset) | 获取CSV生成器(写出器),使用默认配置,覆盖已有文件(如果存在) |
getWriter(File file, Charset charset, boolean isAppend) | 获取CSV生成器(写出器),使用默认配置 |
getWriter(File file, Charset charset, boolean isAppend, CsvWriteConfig config) | 获取CSV生成器(写出器) |
getWriter(String filePath, Charset charset) | 获取CSV生成器(写出器),使用默认配置,覆盖已有文件(如果存在) |
getWriter(String filePath, Charset charset, boolean isAppend) | 获取CSV生成器(写出器),使用默认配置 |
getWriter(Writer writer) | 获取CSV生成器(写出器) |
getWriter(Writer writer, CsvWriteConfig config) | 获取CSV生成器(写出器) |
ThreadUtil
线程池工具
LockUtil
锁相关工具
方法 | 介绍 |
---|---|
createReadWriteLock(boolean fair) | 创建ReentrantReadWriteLock锁 |
createStampLock() | 创建StampedLock锁 |
getNoLock() | 获取单例的无锁对象 |
ArrayUtil
数组工具类
BooleanUtil
Boolean类型相关工具类
ByteUtil
对数字和字节进行转换。
假设数据存储是以大端模式存储的:
byte: 字节类型 占8位二进制 00000000 char: 字符类型 占2个字节 16位二进制 byte[0] byte[1] int : 整数类型 占4个字节 32位二进制 byte[0] byte[1] byte[2] byte[3] long: 长整数类型 占8个字节 64位二进制 byte[0] byte[1] byte[2] byte[3] byte[4] byte[5] long: 长整数类型 占8个字节 64位二进制 byte[0] byte[1] byte[2] byte[3] byte[4] byte[5] byte[6] byte[7] float: 浮点数(小数) 占4个字节 32位二进制 byte[0] byte[1] byte[2] byte[3] double: 双精度浮点数(小数) 占8个字节 64位二进制 byte[0] byte[1] byte[2] byte[3] byte[4]byte[5] byte[6] byte[7] 注:注释来自Hanlp,代码提供来自pr#1492@Github
方法 | 介绍 |
---|---|
bytesToDouble(byte[] bytes) | byte数组转Double 默认以小端序转换 |
bytesToDouble(byte[] bytes, ByteOrder byteOrder) | byte数组转double 自定义端序 |
bytesToInt(byte[] bytes) | byte[]转int值 默认以小端序转换 |
bytesToInt(byte[] bytes, ByteOrder byteOrder) | byte[]转int值 自定义端序 |
bytesToLong(byte[] bytes) | byte数组转long 默认以小端序转换 from: https://stackoverflow.com/questions/4485128/how-do-i-convert-long-to-byte-and-back-in-java |
bytesToLong(byte[] bytes, ByteOrder byteOrder) | byte数组转long 自定义端序 from: https://stackoverflow.com/questions/4485128/how-do-i-convert-long-to-byte-and-back-in-java |
bytesToShort(byte[] bytes) | byte数组转short 默认以小端序转换 |
bytesToShort(byte[] bytes, ByteOrder byteOrder) | byte数组转short 自定义端序 |
byteToUnsignedInt(byte byteValue) | byte转无符号int |
doubleToBytes(double doubleValue) | double转byte数组 默认以小端序转换 |
doubleToBytes(double doubleValue, ByteOrder byteOrder) | double转byte数组 自定义端序 from: https://stackoverflow.com/questions/4485128/how-do-i-convert-long-to-byte-and-back-in-java |
intToByte(int intValue) | int转byte |
intToBytes(int intValue) | int转byte数组 默认以小端序转换 |
intToBytes(int intValue, ByteOrder byteOrder) | int转byte数组 自定义端序 |
longToBytes(long longValue) | long转byte数组 默认以小端序转换 from: https://stackoverflow.com/questions/4485128/how-do-i-convert-long-to-byte-and-back-in-java |
longToBytes(long longValue, ByteOrder byteOrder) | long转byte数组 自定义端序 from: https://stackoverflow.com/questions/4485128/how-do-i-convert-long-to-byte-and-back-in-java |
numberToBytes(Number number) | 将Number转换为 |
numberToBytes(Number number, ByteOrder byteOrder) | 将Number转换为 |
shortToBytes(short shortValue) | short转byte数组 默认以小端序转换 |
shortToBytes(short shortValue, ByteOrder byteOrder) | short转byte数组 自定义端序 |
CharsetUtil
字符集工具类
方法 | 介绍 |
---|---|
charset(String charsetName) | 转换为Charset对象 |
convert(File file, Charset srcCharset, Charset destCharset) | 转换文件编码 此方法用于转换文件编码,读取的文件实际编码必须与指定的srcCharset编码一致,否则导致乱码 |
convert(String source, Charset srcCharset, Charset destCharset) | 转换字符串的字符集编码 当以错误的编码读取为字符串时,打印字符串将出现乱码。 此方法用于纠正因读取使用编码错误导致的乱码问题。 例如,在Servlet请求中客户端用GBK编码了请求参数,我们使用UTF-8读取到的是乱码,此时,使用此方法即可还原原编码的内容 |
convert(String source, String srcCharset, String destCharset) | 转换字符串的字符集编码 |
defaultCharset() | 系统默认字符集编码 |
defaultCharset(InputStream in, Charset... charsets) | 探测编码 注意:此方法会读取流的一部分,然后关闭流,如重复使用流,请使用使用支持reset方法的流 |
defaultCharset(int bufferSize, InputStream in, Charset... charsets) | 探测编码 注意:此方法会读取流的一部分,然后关闭流,如重复使用流,请使用使用支持reset方法的流 |
defaultCharsetName() | 系统默认字符集编码 |
parse(String charsetName) | 解析字符串编码为Charset对象,解析失败返回系统默认编码 |
parse(String charsetName, Charset defaultCharset) | 解析字符串编码为Charset对象,解析失败返回默认编码 |
systemCharset() | 系统字符集编码,如果是Windows,则默认为GBK编码,否则取 defaultCharsetName() |
systemCharsetName() | 系统字符集编码,如果是Windows,则默认为GBK编码,否则取 defaultCharsetName() |
CharUtil
字符工具类
部分工具来自于Apache Commons系列
方法 | 介绍 |
---|---|
digit16(int b) | 获取给定字符的16进制数值 |
equals(char c1, char c2, boolean caseInsensitive) | 比较两个字符是否相同 |
getType(int c) | 获取字符类型 |
isAscii(char ch) | 是否为ASCII字符,ASCII字符位于0~127之间 |
isAsciiControl(char ch) | 是否为ASCII控制符(不可见字符),控制符位于0~31和127 |
isAsciiPrintable(char ch) | 是否为可见ASCII字符,可见字符位于32~126之间 |
isBlankChar(char c) | 是否空白符 空白符包括空格、制表符、全角空格和不间断空格 |
isBlankChar(int c) | 是否空白符 空白符包括空格、制表符、全角空格和不间断空格 |
isChar(Object value) | 给定对象对应的类是否为字符类,字符类包括: |
isCharClass(Class<?> clazz) | 给定类名是否为字符类,字符类包括: |
isEmoji(char c) | 判断是否为emoji表情符 |
isFileSeparator(char c) | 是否为Windows或者Linux(Unix)文件分隔符 Windows平台下分隔符为\,Linux(Unix)为/ |
isHexChar(char c) | 是否为16进制规范的字符,判断是否为如下字符 |
isLetter(char ch) | 判断是否为字母(包括大写字母和小写字母) 字母包括AZ和az |
isLetterLower(char ch) | 检查字符是否为小写字母,小写字母指a~z |
isLetterOrNumber(char ch) | 是否为字母或数字,包括AZ、az、0~9 |
isLetterUpper(char ch) | 判断是否为大写字母,大写字母包括A~Z |
isNumber(char ch) | 检查是否为数字字符,数字字符指0~9 |
toCloseByNumber(int number) | 将[1-20]数字转换为带圈的字符: |
toCloseChar(char c) | 将字母、数字转换为带圈的字符: |
toString(char c) | 字符转为字符串 如果为ASCII字符,使用缓存 |
ClassLoaderUtil
ClassLoader
工具类
方法 | 介绍 |
---|---|
getClassLoader() | 获取ClassLoader 获取顺序如下: |
getContextClassLoader() | 获取当前线程的ClassLoader |
getJarClassLoader(File jarOrDir) | 创建新的JarClassLoader,并使用此Classloader加载目录下的class文件和jar文件 |
getSystemClassLoader() | 获取系统ClassLoader |
isPresent(String className) | 指定类是否被提供,使用默认ClassLoader 通过调用loadClass(String, ClassLoader, boolean)方法尝试加载指定类名的类,如果加载失败返回false 加载失败的原因可能是此类不存在或其关联引用类不存在 |
isPresent(String className, ClassLoader classLoader) | 指定类是否被提供 通过调用loadClass(String, ClassLoader, boolean)方法尝试加载指定类名的类,如果加载失败返回false 加载失败的原因可能是此类不存在或其关联引用类不存在 |
loadClass(File jarOrDir, String name) | 加载外部类 |
loadClass(String name) | 加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader并初始化类(调用static模块内容和初始化static属性) 扩展Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载: |
loadClass(String name, boolean isInitialized) | 加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader 扩展Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载: |
loadClass(String name, ClassLoader classLoader, boolean isInitialized) | 加载类,通过传入类的字符串,返回其对应的类名 此方法支持缓存,第一次被加载的类之后会读取缓存中的类 加载失败的原因可能是此类不存在或其关联引用类不存在 扩展Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载: |
loadPrimitiveClass(String name) | 加载原始类型的类。包括原始类型、原始类型数组和void |
ClassUtil
类工具类
CreditCodeUtil
统一社会信用代码工具类
方法 | 介绍 |
---|---|
isCreditCode(CharSequence creditCode) | 是否是有效的统一社会信用代码 |
isCreditCodeSimple(CharSequence creditCode) | 正则校验统一社会信用代码(18位) |
randomCreditCode() | 获取一个随机的统一社会信用代码 |
DesensitizedUtil
脱敏工具类,支持以下类型信息的脱敏自动处理: 用户ID 中文名 身份证 座机号 手机号 地址 电子邮件 密码 车牌 银行卡号
方法 | 介绍 |
---|---|
address(String address, int sensitiveSize) | 【地址】只显示到地区,不显示详细地址,比如:北京市海淀区**** |
bankCard(String bankCardNo) | 银行卡号脱敏 eg: 1101 **** **** **** 3256 |
carLicense(String carLicense) | 【中国车牌】车牌中间用代替 eg1:null -》 "" eg1:"" -》 "" eg3:苏D40000 -》 苏D40 eg4:陕A12345D -》 陕A1**D eg5:京A123 -》 京A123 如果是错误的车牌,不处理 |
chineseName(String fullName) | 【中文姓名】只显示第一个汉字,其他隐藏为2个星号,比如:李** |
desensitized(CharSequence str, DesensitizedUtil.DesensitizedType desensitizedType) | 脱敏,使用默认的脱敏策略 |
email(String email) | 【电子邮箱】邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示,比如:d**@126.com |
fixedPhone(String num) | 【固定电话 前四位,后两位 |
idCardNum(String idCardNum, int front, int end) | 【身份证号】前1位 和后2位 |
mobilePhone(String num) | 【手机号码】前三位,后4位,其他隐藏,比如135****2210 |
password(String password) | 【密码】密码的全部字符都用代替,比如:***** |
userId() | 【用户id】不对外提供userId |
EnumUtil
枚举工具类
EscapeUtil
转义和反转义工具类Escape / Unescape
escape采用ISO Latin字符集对指定的字符串进行编码。
所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。
方法 | 介绍 |
---|---|
escape(CharSequence content) | Escape编码(Unicode)(等同于JS的escape()方法) 该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . |
escape(CharSequence content, Filter |
Escape编码(Unicode) 该方法不会对 ASCII 字母和数字进行编码。其他所有的字符都会被转义序列替换。 |
escapeAll(CharSequence content) | Escape编码(Unicode) 该方法不会对 ASCII 字母和数字进行编码。其他所有的字符都会被转义序列替换。 |
escapeHtml4(CharSequence html) | 转义HTML4中的特殊字符 |
escapeXml(CharSequence xml) | 转义XML中的特殊字符 |
safeUnescape(String content) | 安全的unescape文本,当文本不是被escape的时候,返回原文。 |
unescape(String content) | Escape解码 |
unescapeHtml4(CharSequence html) | 反转义HTML4中的特殊字符 |
unescapeXml(CharSequence xml) | 反转义XML中的特殊字符 |
HashUtil
Hash算法大全
推荐使用FNV1算法
HexUtil
十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制,一般用数字0到9和字母A到F表示(其中:AF即1015)。
例如十进制数57,在二进制写作111001,在16进制写作39。
像java,c这样的语言为了区分十六进制和十进制数值,会在十六进制数的前面加上 0x,比如0x20是十进制的32,而不是十进制的20
IdcardUtil
身份证相关工具类
see https://www.oschina.net/code/snippet_1611_2881
IdUtil
ID生成器工具类,此工具类中主要封装:
方法 | 介绍 |
---|---|
createSnowflake(long workerId, long datacenterId) | Deprecated. 此方法容易产生起义:多个Snowflake实例产生的ID会产生重复,此对象在单台机器上必须单例! |
fastSimpleUUID() | 简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID |
fastUUID() | 获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID |
getDataCenterId(long maxDatacenterId) | 获取数据中心ID 数据中心ID依赖于本地网卡MAC地址。 |
getSnowflake() | 获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 |
getSnowflake(long workerId) | 获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 |
getSnowflake(long workerId, long datacenterId) | 获取单例的Twitter的Snowflake 算法生成器对象 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 |
getWorkerId(long datacenterId, long maxWorkerId) | 获取机器ID,使用进程ID配合数据中心ID生成 机器依赖于本进程ID或进程名的Hash值。 |
nanoId() | 获取随机NanoId |
nanoId(int size) | 获取随机NanoId |
objectId() | 创建MongoDB ID生成策略实现 ObjectId由以下几部分组成: |
randomUUID() | 获取随机UUID |
simpleUUID() | 简化的UUID,去掉了横线 |
JAXBUtil
JAXB(Java Architecture for XML Binding),根据XML Schema产生Java对象,即实现xml和Bean互转。
方法 | 介绍 |
---|---|
beanToXml(Object bean) | JavaBean转换成xml |
beanToXml(Object bean, Charset charset, boolean format) | JavaBean转换成xml |
xmlToBean(File file, Charset charset, Class |
XML文件转Bean |
xmlToBean(Reader reader, Class |
从Reader中读取XML字符串,并转换为Bean |
xmlToBean(String xml, Class |
xml转换成JavaBean |
JNDIUtil
JNDI工具类
JNDI是Java Naming and Directory Interface(JAVA命名和目录接口)的英文简写,
它是为JAVA应用程序提供命名和目录访问服务的API(Application Programing Interface,应用程序编程接口)。
方法 | 介绍 |
---|---|
createInitialContext(Map<String,String> environment) | 创建InitialContext |
createInitialDirContext(Map<String,String> environment) | 创建InitialDirContext |
getAttributes(String uri, String... attrIds) | 获取指定容器环境的对象的属性 如获取DNS属性,则URI为类似:dns:hutool.cn |
ModifierUtil
修饰符工具类
方法 | 介绍 |
---|---|
hasModifier(Class<?> clazz, ModifierUtil.ModifierType... modifierTypes) | 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true) |
hasModifier(Constructor<?> constructor, ModifierUtil.ModifierType... modifierTypes) | 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true) |
hasModifier(Field field, ModifierUtil.ModifierType... modifierTypes) | 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true) |
hasModifier(Method method, ModifierUtil.ModifierType... modifierTypes) | 是否同时存在一个或多个修饰符(可能有多个修饰符,如果有指定的修饰符则返回true) |
isPublic(Class<?> clazz) | 是否是Public类 |
isPublic(Constructor<?> constructor) | 是否是Public构造 |
isPublic(Field field) | 是否是Public字段 |
isPublic(Method method) | 是否是Public方法 |
isStatic(Class<?> clazz) | 是否是static类 |
isStatic(Field field) | 是否是static字段 |
isStatic(Method method) | 是否是static方法 |
isSynthetic(Class<?> clazz) | 是否是合成类(由java编译器生成的) |
isSynthetic(Field field) | 是否是合成字段(由java编译器生成的) |
isSynthetic(Method method) | 是否是合成方法(由java编译器生成的) |
NumberUtil
数字工具类
对于精确值计算应该使用BigDecimal
JDK7中BigDecimal(double val)构造方法的结果有一定的不可预知性,例如:
ObjectUtil
对象工具类,包括判空、克隆、序列化等操作
方法 | 介绍 |
---|---|
clone(T obj) | 克隆对象 如果对象实现Cloneable接口,调用其clone方法 如果实现Serializable接口,执行深度克隆 否则返回null |
cloneByStream(T obj) | 序列化后拷贝流的方式克隆 对象必须实现Serializable接口 |
cloneIfPossible(T obj) | 返回克隆后的对象,如果克隆失败,返回原对象 |
compare(T c1, T c2) | null安全的对象比较,null对象排在末尾 |
compare(T c1, T c2, boolean nullGreater) | null安全的对象比较 |
contains(Object obj, Object element) | 对象中是否包含元素 支持的对象类型包括: String Collection Map Iterator Enumeration Array |
defaultIfBlank(T str, T defaultValue) | 如果给定对象为null或者""或者空白符返回默认值 |
defaultIfEmpty(String str, Supplier<? extends T> handle, T defaultValue) | 如果给定对象为null或者""返回默认值, 否则返回自定义handle处理后的返回值 |
defaultIfEmpty(T str, T defaultValue) | 如果给定对象为null或者 "" 返回默认值 |
defaultIfNull(Object source, Supplier<? extends T> handle, T defaultValue) | 如果给定对象为null 返回默认值, 如果不为null 返回自定义handle处理后的返回值 |
defaultIfNull(T object, T defaultValue) | 如果给定对象为null返回默认值 |
deserialize(byte[] bytes) | 反序列化 对象必须实现Serializable接口 |
emptyCount(Object... objs) | 存在多少个null或空对象,通过isEmpty(Object) 判断元素 |
equal(Object obj1, Object obj2) | 比较两个对象是否相等。 相同的条件有两个,满足其一即可: obj1 == null && obj2 == null obj1.equals(obj2) 如果是BigDecimal比较,0 == obj1.compareTo(obj2) |
equals(Object obj1, Object obj2) | 比较两个对象是否相等,此方法是 equal(Object, Object)的别名方法。 相同的条件有两个,满足其一即可: obj1 == null && obj2 == null obj1.equals(obj2) 如果是BigDecimal比较,0 == obj1.compareTo(obj2) |
getTypeArgument(Object obj) | 获得给定类的第一个泛型参数 |
getTypeArgument(Object obj, int index) | 获得给定类的第一个泛型参数 |
hasEmpty(Object... objs) | 是否存在null或空对象,通过isEmpty(Object) 判断元素 |
hasNull(Object... objs) | 是否存在null对象,通过isNull(Object) 判断元素 |
isAllEmpty(Object... objs) | 是否全都为null或空对象,通过isEmpty(Object) 判断元素 |
isAllNotEmpty(Object... objs) | 是否全都不为null或空对象,通过isEmpty(Object) 判断元素 |
isBasicType(Object object) | 是否为基本类型,包括包装类型和非包装类型 |
isEmpty(Object obj) | 判断指定对象是否为空,支持: |
isNotEmpty(Object obj) | 判断指定对象是否为非空,支持: |
isNotNull(Object obj) | 检查对象是否不为null |
isNull(Object obj) | 检查对象是否为null 判断标准为: |
isValidIfNumber(Object obj) | 检查是否为有效的数字 检查Double和Float是否为无限大,或者Not a Number 非数字类型和Null将返回true |
length(Object obj) | 计算对象长度,如果是字符串调用其length函数,集合类调用其size函数,数组调用其length属性,其他可遍历对象遍历计算长度 支持的类型包括: CharSequence Map Iterator Enumeration Array |
notEqual(Object obj1, Object obj2) | 比较两个对象是否不相等。 |
serialize(T obj) | 序列化 对象必须实现Serializable接口 |
toString(Object obj) | 将Object转为String 策略为: |
PageUtil
分页工具类
方法 | 介绍 |
---|---|
getEnd(int pageNo, int pageSize) | 将页数和每页条目数转换为结束位置 此方法用于不包括结束位置的分页方法 例如: |
getFirstPageNo() | 获得首页的页码,可以为0或者1 |
getStart(int pageNo, int pageSize) | 将页数和每页条目数转换为开始位置 此方法用于不包括结束位置的分页方法 例如: |
rainbow(int currentPage, int pageCount) | 分页彩虹算法(默认展示10页) 来自:https://github.com/iceroot/iceroot/blob/master/src/main/java/com/icexxx/util/IceUtil.java |
rainbow(int pageNo, int totalPage, int displayCount) | 分页彩虹算法 来自:https://github.com/iceroot/iceroot/blob/master/src/main/java/com/icexxx/util/IceUtil.java 通过传入的信息,生成一个分页列表显示 |
setFirstPageNo(int customFirstPageNo) | 设置首页页码,可以为0或者1 |
setOneAsFirstPageNo() | 设置首页页码为1 |
toSegment(int pageNo, int pageSize) | 将页数和每页条目数转换为开始位置和结束位置 此方法用于包括结束位置的分页方法 例如: |
totalPage(int totalCount, int pageSize) | 根据总数计算总页数 |
transToStartEnd(int pageNo, int pageSize) | 将页数和每页条目数转换为开始位置和结束位置 此方法用于包括结束位置的分页方法 例如: |
PhoneUtil
电话号码工具类,包括: 手机号码 400、800号码 座机号码
方法 | 介绍 |
---|---|
hideAfter(CharSequence phone) | 隐藏手机号最后4位 替换字符为"*" |
hideBefore(CharSequence phone) | 隐藏手机号前7位 替换字符为"*" 栗子 |
hideBetween(CharSequence phone) | 隐藏手机号中间4位 替换字符为"*" |
isMobile(CharSequence value) | 验证是否为手机号码(中国) |
isMobileHk(CharSequence value) | 验证是否为手机号码(香港) |
isMobileMo(CharSequence value) | 验证是否为手机号码(澳门) |
isMobileTw(CharSequence value) | 验证是否为手机号码(台湾) |
isPhone(CharSequence value) | 验证是否为座机号码+手机号码(CharUtil中国)+ 400 + 800电话 + 手机号号码(香港) |
isTel(CharSequence value) | 验证是否为座机号码(中国) |
isTel400800(CharSequence value) | 验证是否为座机号码(中国)+ 400 + 800 |
subAfter(CharSequence phone) | 获取手机号后4位 |
subBefore(CharSequence phone) | 获取手机号前3位 |
subBetween(CharSequence phone) | 获取手机号中间4位 |
subTelAfter(CharSequence value) | 获取固话号码中的号码 |
subTelBefore(CharSequence value) | 获取固话号码中的区号 |
PrimitiveArrayUtil
原始类型数组工具类
RadixUtil
进制转换工具类,可以转换为任意进制
方法 | 介绍 |
---|---|
decode(String radixs, String encodeStr) | 把转换后进制的字符还原成long 值 |
decodeToInt(String radixs, String encodeStr) | 把转换后的进制字符还原成int 值 |
encode(String radixs, int num) | 把一个整型数值转换成自己定义的进制 长度即进制 encode("AB",10) 51转换成2进制,A=0;B=1 。 二进制1010,结果 BABA encode("VIP",21) 21转换成3进制,V=0;I=1;P=2 ,三进制210 ,得到结果PIV |
encode(String radixs, long num) | 把一个长整型数值转换成自己定义的进制 |
RandomUtil
随机工具类
ReferenceUtil
引用工具类,主要针对
Reference
工具化封装
主要封装包括:
方法 | 介绍 |
---|---|
create(ReferenceUtil.ReferenceType type, T referent) | 获得引用 |
create(ReferenceUtil.ReferenceType type, T referent, ReferenceQueue |
获得引用 |
ReflectUtil
反射工具类
ReUtil
正则相关工具类
常用正则请见Validator
RuntimeUtil
系统运行时工具类,用于执行系统命令的工具
SerializeUtil
序列化工具类
方法 | 介绍 |
---|---|
clone(T obj) | 序列化后拷贝流的方式克隆 对象必须实现Serializable接口 |
deserialize(byte[] bytes) | 反序列化 对象必须实现Serializable接口 |
serialize(T obj) | 序列化 对象必须实现Serializable接口 |
ServiceLoaderUtil
SPI机制中的服务加载工具类,流程如下
方法 | 介绍 |
---|---|
load(Class |
加载服务 |
load(Class |
加载服务 |
loadFirst(Class |
加载第一个服务,如果用户定义了多个接口实现类,只获取第一个。 |
loadFirstAvailable(Class |
。加载第一个可用服务,如果用户定义了多个接口实现类,只获取第一个不报错的服务 |
loadList(Class |
加载服务 并已list列表返回 |
loadList(Class |
加载服务 并已list列表返回 |
StrUtil
字符串工具类
TypeUtil
针对
Type
的工具类封装
最主要功能包括:
方法 | 介绍 |
---|---|
getActualType(Type type, Field field) | 获得泛型字段对应的泛型实际类型,如果此变量没有对应的实际类型,返回null |
getActualType(Type type, ParameterizedType parameterizedType) | 获得泛型变量对应的泛型实际类型,如果此变量没有对应的实际类型,返回null 此方法可以处理复杂的泛型化对象,类似于Map<User, Key |
getActualType(Type type, Type typeVariable) | 获得泛型变量对应的泛型实际类型,如果此变量没有对应的实际类型,返回null 此方法可以处理: |
getActualTypes(Type type, Type... typeVariables) | 获得泛型变量对应的泛型实际类型,如果此变量没有对应的实际类型,返回null |
getClass(Field field) | 获得Field对应的原始类 |
getClass(Type type) | 获得Type对应的原始类 |
getFieldType(Class<?> clazz, String fieldName) | 获得字段的泛型类型 |
getFirstParamClass(Method method) | 获取方法的第一个参数类 |
getFirstParamType(Method method) | 获取方法的第一个参数类型 优先获取方法的GenericParameterTypes,如果获取不到,则获取ParameterTypes |
getParamClass(Method method, int index) | 获取方法的参数类 |
getParamClasses(Method method) | 解析方法的参数类型列表 依赖jre\lib\rt.jar |
getParamType(Method method, int index) | 获取方法的参数类型 优先获取方法的GenericParameterTypes,如果获取不到,则获取ParameterTypes |
getParamTypes(Method method) | 获取方法的参数类型列表 优先获取方法的GenericParameterTypes,如果获取不到,则获取ParameterTypes |
getReturnClass(Method method) | 解析方法的返回类型类列表 |
getReturnType(Method method) | 获取方法的返回值类型 获取方法的GenericReturnType |
getType(Field field) | 获取字段对应的Type类型 方法优先获取GenericType,获取不到则获取Type |
getTypeArgument(Type type) | 获得给定类的第一个泛型参数 |
getTypeArgument(Type type, int index) | 获得给定类的泛型参数 |
getTypeArguments(Type type) | 获得指定类型中所有泛型参数类型,例如: |
getTypeMap(Class<?> clazz) | 获取泛型变量和泛型实际类型的对应关系Map,例如: |
hasTypeVariable(Type... types) | 指定泛型数组中是否含有泛型变量 |
isUnknown(Type type) | 是否未知类型 type为null或者TypeVariable 都视为未知类型 |
toParameterizedType(Type type) | 将Type 转换为ParameterizedType ParameterizedType用于获取当前类或父类中泛型参数化后的类型 一般用于获取泛型参数具体的参数类型,例如: |
URLUtil
URL(Uniform Resource Locator)统一资源定位符相关工具类
方法 | 介绍 |
---|---|
buildQuery(Map<String,?> paramMap, Charset charset) | 将Map形式的Form表单数据转换为Url参数形式 paramMap中如果key为空(null和"")会被忽略,如果value为null,会被做为空白符("") 会自动url编码键和值 |
completeUrl(String baseUrl, String relativePath) | 补全相对路径 |
decode(String url) | 解码URL 将%开头的16进制表示的内容解码。 |
decode(String content, Charset charset) | 解码application/x-www-form-urlencoded字符 将%开头的16进制表示的内容解码。 |
decode(String content, Charset charset, boolean isPlusToSpace) | 解码application/x-www-form-urlencoded字符 将%开头的16进制表示的内容解码。 |
decode(String content, String charset) | 解码application/x-www-form-urlencoded字符 将%开头的16进制表示的内容解码。 |
encodeBlank(CharSequence urlStr) | 单独编码URL中的空白符,空白符编码为%20 |
getContentLength(URL url) | 获取指定URL对应资源的内容长度,对于Http,其长度使用Content-Length头决定。 |
getDataUri(String mimeType, Charset charset, String encoding, String data) | Data URI Scheme封装。data URI scheme 允许我们使用内联(inline-code)的方式在网页中包含数据, 目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。常用于将图片嵌入网页。 |
getDataUri(String mimeType, String encoding, String data) | Data URI Scheme封装。data URI scheme 允许我们使用内联(inline-code)的方式在网页中包含数据, 目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。常用于将图片嵌入网页。 |
getDataUriBase64(String mimeType, String data) | Data URI Scheme封装,数据格式为Base64。data URI scheme 允许我们使用内联(inline-code)的方式在网页中包含数据, 目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。常用于将图片嵌入网页。 |
getDecodedPath(URL url) | 从URL对象中获取不被编码的路径Path 对于本地路径,URL对象的getPath方法对于包含中文或空格时会被编码,导致本读路径读取错误。 此方法将URL转为URI后获取路径用于解决路径被编码的问题 |
getHost(URL url) | 获取URL中域名部分,只保留URL中的协议(Protocol)、Host,其它为null。 |
getJarFile(URL url) | 从URL中获取JarFile |
getPath(String uriStr) | 获得path部分 |
getReader(URL url, Charset charset) | 获得Reader |
getStream(URL url) | 从URL中获取流 |
getStringURI(CharSequence content) | 获取string协议的URL,类似于string:///xxxxx |
getURL(File file) | 获得URL,常用于使用绝对路径时的情况 |
getURL(String pathBaseClassLoader) | 获得URL |
getURL(String path, Class<?> clazz) | 获得URL |
getURLs(File... files) | 获得URL,常用于使用绝对路径时的情况 |
isFileURL(URL url) | 提供的URL是否为文件 文件协议包括"file", "vfsfile" 或 "vfs". |
isJarFileURL(URL url) | 提供的URL是否为Jar文件URL 判断依据为file协议且扩展名为.jar |
isJarURL(URL url) | 提供的URL是否为jar包URL 协议包括: "jar", "zip", "vfszip" 或 "wsjar". |
normalize(String url) | 标准化URL字符串,包括: 自动补齐“http://”头 去除开头的\或者/ 替换\为/ |
normalize(String url, boolean isEncodePath) | 标准化URL字符串,包括: 自动补齐“http://”头 去除开头的\或者/ 替换\为/ |
normalize(String url, boolean isEncodePath, boolean replaceSlash) | 标准化URL字符串,包括: 自动补齐“http://”头 去除开头的\或者/ 替换\为/ 如果replaceSlash为true,则替换多个/为一个 |
toURI(String location) | 转字符串为URI |
toURI(String location, boolean isEncode) | 转字符串为URI |
toURI(URL url) | 转URL为URI |
toURI(URL url, boolean isEncode) | 转URL为URI |
toUrlForHttp(String urlStr) | 将URL字符串转换为URL对象,并做必要验证 |
toUrlForHttp(String urlStr, URLStreamHandler handler) | 将URL字符串转换为URL对象,并做必要验证 |
url(String url) | 通过一个字符串形式的URL地址创建URL对象 |
url(String url, URLStreamHandler handler) | 通过一个字符串形式的URL地址创建URL对象 |
XmlUtil
XML工具类
此工具使用w3c dom工具,不需要依赖第三方包。
工具类封装了XML文档的创建、读取、写出和部分XML操作
ZipUtil
压缩工具类
CronUtil
定时任务工具类
此工具持有一个全局Scheduler
,所有定时任务在同一个调度器中执行
CronUtil.setMatchSecond(boolean)
方法用于定义是否使用秒匹配模式,如果为true,则定时任务表达式中的第一位为秒,否则为分,默认是分
方法 | 介绍 |
---|---|
getScheduler() | |
remove(String schedulerId) | 移除任务 |
restart() | 重新启动定时任务 此方法会清除动态加载的任务,重新启动后,守护线程与否与之前保持一致 |
schedule(Setting cronSetting) | 批量加入配置文件中的定时任务 |
schedule(String schedulingPattern, Runnable task) | 加入定时任务 |
schedule(String id, String schedulingPattern, Task task) | 加入定时任务 |
schedule(String schedulingPattern, Task task) | 加入定时任务 |
setCronSetting(Setting cronSetting) | 自定义定时任务配置文件 |
setCronSetting(String cronSettingPath) | 自定义定时任务配置文件路径 |
setMatchSecond(boolean isMatchSecond) | 设置是否支持秒匹配 此方法用于定义是否使用秒匹配模式,如果为true,则定时任务表达式中的第一位为秒,否则为分,默认是分 |
start() | 开始,非守护线程模式 |
start(boolean isDaemon) | 开始 |
stop() | 停止 |
updatePattern(String id, CronPattern pattern) | 更新Task的执行时间规则 |
CronPatternUtil
定时任务表达式工具类
方法 | 介绍 |
---|---|
matchedDates(CronPattern pattern, long start, long end, int count, boolean isMatchSecond) | 列举指定日期范围内所有匹配表达式的日期 |
matchedDates(String patternStr, Date start, Date end, int count, boolean isMatchSecond) | 列举指定日期范围内所有匹配表达式的日期 |
matchedDates(String patternStr, Date start, int count, boolean isMatchSecond) | 列举指定日期之后(到开始日期对应年年底)内所有匹配表达式的日期 |
matchedDates(String patternStr, long start, long end, int count, boolean isMatchSecond) | 列举指定日期范围内所有匹配表达式的日期 |
nextDateAfter(CronPattern pattern, Date start, boolean isMatchSecond) | 列举指定日期之后(到开始日期对应年年底)内第一个匹配表达式的日期 |
ASN1Util
ASN.1 – Abstract Syntax Notation dot one,抽象记法1 工具类。
ASN.1描述了一种对数据进行表示、编码、传输和解码的数据格式。它的编码格式包括DER、BER、DL等
方法 | 介绍 |
---|---|
decode(InputStream in) | 读取ASN.1数据流为ASN1Object |
encode(String asn1Encoding, org.bouncycastle.asn1.ASN1Encodable... elements) | 编码为指定ASN1格式 |
encodeDer(org.bouncycastle.asn1.ASN1Encodable... elements) | 编码为DER格式 |
encodeTo(String asn1Encoding, OutputStream out, org.bouncycastle.asn1.ASN1Encodable... elements) | 编码为指定ASN1格式 |
getDumpStr(InputStream in) | 获取ASN1格式的导出格式,一般用于调试 |
BCUtil
Bouncy Castle相关工具类封装
ECKeyUtil
EC密钥参数相关工具类封装
KeyUtil
密钥工具类
方法 | 介绍 |
---|---|
decodeECPoint(byte[] encodeByte, String curveName) | 解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle) 见:https://www.cnblogs.com/xinzhao/p/8963724.html |
decodeECPoint(String encode, String curveName) | 解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle) 见:https://www.cnblogs.com/xinzhao/p/8963724.html |
encodeECPublicKey(PublicKey publicKey) | 编码压缩EC公钥(基于BouncyCastle) 见:https://www.cnblogs.com/xinzhao/p/8963724.html |
generateDESKey(String algorithm, byte[] key) | 生成 SecretKey |
generateKey(String algorithm) | 生成 SecretKey,仅用于对称加密和摘要算法密钥生成 |
generateKey(String algorithm, byte[] key) | 生成 SecretKey,仅用于对称加密和摘要算法密钥生成 |
generateKey(String algorithm, int keySize) | 生成 SecretKey,仅用于对称加密和摘要算法密钥生成 当指定keySize<0时,AES默认长度为128,其它算法不指定。 |
generateKey(String algorithm, int keySize, SecureRandom random) | 生成 SecretKey,仅用于对称加密和摘要算法密钥生成 当指定keySize<0时,AES默认长度为128,其它算法不指定。 |
generateKey(String algorithm, KeySpec keySpec) | 生成 SecretKey,仅用于对称加密和摘要算法 |
generateKeyPair(String algorithm) | 生成用于非对称加密的公钥和私钥,仅用于非对称加密 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, AlgorithmParameterSpec params) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, byte[] seed, AlgorithmParameterSpec param) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, int keySize) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, int keySize, byte[] seed) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, int keySize, byte[] seed, AlgorithmParameterSpec... params) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, int keySize, SecureRandom random, AlgorithmParameterSpec... params) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generatePBEKey(String algorithm, char[] key) | 生成PBE SecretKey |
generatePrivateKey(KeyStore keyStore, String alias, char[] password) | 生成私钥,仅用于非对称加密 |
generatePrivateKey(String algorithm, byte[] key) | 生成私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
generatePrivateKey(String algorithm, KeySpec keySpec) | 生成私钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
generatePublicKey(String algorithm, byte[] key) | 生成公钥,仅用于非对称加密 采用X509证书规范 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
generatePublicKey(String algorithm, KeySpec keySpec) | 生成公钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
generateRSAPrivateKey(byte[] key) | 生成RSA私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
generateRSAPublicKey(byte[] key) | 生成RSA公钥,仅用于非对称加密 采用X509证书规范 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
getAlgorithmAfterWith(String algorithm) | 获取用于密钥生成的算法 获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为EC |
getCertificate(KeyStore keyStore, String alias) | 获得 Certification |
getCertificateFactory(String type) | 获取CertificateFactory |
getKeyFactory(String algorithm) | 获取KeyFactory |
getKeyGenerator(String algorithm) | 获取KeyGenerator |
getKeyPair(KeyStore keyStore, char[] password, String alias) | 从KeyStore中获取私钥公钥 |
getKeyPair(String type, InputStream in, char[] password, String alias) | 从KeyStore中获取私钥公钥 |
getKeyPairGenerator(String algorithm) | 获取KeyPairGenerator |
getMainAlgorithm(String algorithm) | 获取主体算法名,例如RSA/ECB/PKCS1Padding的主体算法是RSA |
getRSAPublicKey(BigInteger modulus, BigInteger publicExponent) | 获得RSA公钥对象 |
getRSAPublicKey(PrivateKey privateKey) | 通过RSA私钥生成RSA公钥 |
getRSAPublicKey(String modulus, String publicExponent) | 获得RSA公钥对象 |
getSecretKeyFactory(String algorithm) | 获取SecretKeyFactory |
readCertificate(String type, InputStream in) | 读取Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931 |
readCertificate(String type, InputStream in, char[] password, String alias) | 读取Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931 |
readJKSKeyStore(File keyFile, char[] password) | 读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931 |
readJKSKeyStore(InputStream in, char[] password) | 读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931 |
readKeyStore(String type, File keyFile, char[] password) | 读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931 |
readKeyStore(String type, InputStream in, char[] password) | 读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931 |
readPKCS12KeyStore(File keyFile, char[] password) | 读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存 |
readPKCS12KeyStore(InputStream in, char[] password) | 读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存 |
readPublicKeyFromCert(InputStream in) | 读取X.509 Certification文件中的公钥 Certification为证书文件 see: https://www.cnblogs.com/yinliang/p/10115519.html |
readX509Certificate(InputStream in) | 读取X.509 Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931 |
readX509Certificate(InputStream in, char[] password, String alias) | 读取X.509 Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931 |
PemUtil
PEM(Privacy Enhanced Mail)格式相关工具类。(基于Bouncy Castle)
方法 | 介绍 |
---|---|
readPem(InputStream keyStream) | 从pem流中读取公钥或私钥 |
readPemKey(InputStream keyStream) | 从pem文件中读取公钥或私钥 根据类型返回 PublicKey 或者 PrivateKey |
readPemObject(InputStream keyStream) | 读取pem文件中的信息,包括类型、头信息和密钥内容 |
readPemObject(Reader reader) | 读取pem文件中的信息,包括类型、头信息和密钥内容 |
readPemPrivateKey(InputStream pemStream) | 读取PEM格式的私钥 |
readPemPublicKey(InputStream pemStream) | 读取PEM格式的公钥 |
readSm2PemPrivateKey(InputStream keyStream) | 读取OpenSSL生成的ANS1格式的Pem私钥文件,必须为PKCS#1格式 |
toPem(String type, byte[] content) | 将私钥或公钥转换为PEM格式的字符串 |
writePemObject(org.bouncycastle.util.io.pem.PemObjectGenerator pemObject, OutputStream keyStream) | 写出pem密钥(私钥、公钥、证书) |
writePemObject(org.bouncycastle.util.io.pem.PemObjectGenerator pemObject, Writer writer) | 写出pem密钥(私钥、公钥、证书) |
writePemObject(String type, byte[] content, OutputStream keyStream) | 写出pem密钥(私钥、公钥、证书) |
writePemObject(String type, byte[] content, Writer writer) | 写出pem密钥(私钥、公钥、证书) |
SecureUtil
安全相关工具类
加密分为三种:
1、对称加密(symmetric),例如:AES、DES等
2、非对称加密(asymmetric),例如:RSA、DSA等
3、摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等
方法 | 介绍 |
---|---|
addProvider(Provider provider) | 增加加密解密的算法提供者,默认优先使用,例如: |
aes() | AES加密,生成随机KEY。注意解密时必须使用相同 AES对象或者使用相同KEY 例: |
aes(byte[] key) | AES加密 例: |
createCipher(String algorithm) | 创建Cipher |
createMac(String algorithm) | 创建Mac |
createMessageDigest(String algorithm) | 创建MessageDigest |
createSignature(String algorithm) | 创建Signature |
decode(String key) | 解码字符串密钥,可支持的编码如下: |
des() | DES加密,生成随机KEY。注意解密时必须使用相同 DES对象或者使用相同KEY 例: |
des(byte[] key) | DES加密 例: |
desede() | DESede加密(又名3DES、TripleDES),生成随机KEY。注意解密时必须使用相同 DESede对象或者使用相同KEY Java中默认实现为:DESede/ECB/PKCS5Padding 例: |
desede(byte[] key) | DESede加密(又名3DES、TripleDES) Java中默认实现为:DESede/ECB/PKCS5Padding 例: |
disableBouncyCastle() | 强制关闭Bouncy Castle库的使用,全局有效 |
fpe(FPE.FPEMode mode, byte[] key, org.bouncycastle.crypto.AlphabetMapper mapper, byte[] tweak) | FPE(Format Preserving Encryption)实现,支持FF1和FF3-1模式。 |
generateAlgorithm(AsymmetricAlgorithm asymmetricAlgorithm, DigestAlgorithm digestAlgorithm) | 生成算法,格式为XXXwithXXX |
generateDESKey(String algorithm, byte[] key) | 生成 SecretKey |
generateKey(String algorithm) | 生成 SecretKey,仅用于对称加密和摘要算法密钥生成 |
generateKey(String algorithm, byte[] key) | 生成 SecretKey,仅用于对称加密和摘要算法密钥生成 |
generateKey(String algorithm, int keySize) | 生成 SecretKey,仅用于对称加密和摘要算法密钥生成 |
generateKey(String algorithm, KeySpec keySpec) | 生成 SecretKey,仅用于对称加密和摘要算法 |
generateKeyPair(String algorithm) | 生成用于非对称加密的公钥和私钥,仅用于非对称加密 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, AlgorithmParameterSpec params) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, byte[] seed, AlgorithmParameterSpec params) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, int keySize) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generateKeyPair(String algorithm, int keySize, byte[] seed) | 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator |
generatePBEKey(String algorithm, char[] key) | 生成PBE SecretKey |
generatePrivateKey(KeyStore keyStore, String alias, char[] password) | 生成私钥,仅用于非对称加密 |
generatePrivateKey(String algorithm, byte[] key) | 生成私钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
generatePrivateKey(String algorithm, KeySpec keySpec) | 生成私钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
generatePublicKey(String algorithm, byte[] key) | 生成公钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
generatePublicKey(String algorithm, KeySpec keySpec) | 生成公钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory |
generateSignature(AsymmetricAlgorithm asymmetricAlgorithm, DigestAlgorithm digestAlgorithm) | 生成签名对象,仅用于非对称加密 |
getAlgorithmAfterWith(String algorithm) | 获取用于密钥生成的算法 获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为EC |
getCertificate(KeyStore keyStore, String alias) | 获得 Certification |
hmac(HmacAlgorithm algorithm, byte[] key) | 创建HMac对象,调用digest方法可获得hmac值 |
hmac(HmacAlgorithm algorithm, SecretKey key) | 创建HMac对象,调用digest方法可获得hmac值 |
hmac(HmacAlgorithm algorithm, String key) | 创建HMac对象,调用digest方法可获得hmac值 |
hmacMd5() | HmacMD5加密器,生成随机KEY 例: HmacMD5加密:hmacMd5().digest(data) HmacMD5加密并转为16进制字符串:hmacMd5().digestHex(data) |
hmacMd5(byte[] key) | HmacMD5加密器 例: HmacMD5加密:hmacMd5(key).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data) |
hmacMd5(String key) | HmacMD5加密器 例: HmacMD5加密:hmacMd5(key).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data) |
hmacSha1() | HmacSHA1加密器,生成随机KEY 例: HmacSHA1加密:hmacSha1().digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1().digestHex(data) |
hmacSha1(byte[] key) | HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(key).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data) |
hmacSha1(String key) | HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(key).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data) |
hmacSha256() | HmacSHA256加密器,生成随机KEY 例: HmacSHA256加密:hmacSha256().digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256().digestHex(data) |
hmacSha256(byte[] key) | HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(key).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(key).digestHex(data) |
hmacSha256(String key) | HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(key).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(key).digestHex(data) |
md5() | MD5加密 例: |
md5(File dataFile) | MD5加密文件,生成16进制MD5字符串 |
md5(InputStream data) | MD5加密,生成16进制MD5字符串 |
md5(String data) | MD5加密,生成16进制MD5字符串 |
pbkdf2(char[] password, byte[] salt) | PBKDF2加密密码 |
rc4(String key) | RC4算法 |
readCertificate(String type, InputStream in) | 读取Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931 |
readCertificate(String type, InputStream in, char[] password, String alias) | 读取Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931 |
readJKSKeyStore(InputStream in, char[] password) | 读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931 |
readKeyStore(String type, InputStream in, char[] password) | 读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931 |
readX509Certificate(InputStream in) | 读取X.509 Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931 |
readX509Certificate(InputStream in, char[] password, String alias) | 读取X.509 Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931 |
rsa() | 创建RSA算法对象 生成新的私钥公钥对 |
rsa(byte[] privateKey, byte[] publicKey) | 创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
rsa(String privateKeyBase64, String publicKeyBase64) | 创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
sha1() | SHA1加密 例: SHA1加密:sha1().digest(data) SHA1加密并转为16进制字符串:sha1().digestHex(data) |
sha1(File dataFile) | SHA1加密文件,生成16进制SHA1字符串 |
sha1(InputStream data) | SHA1加密,生成16进制SHA1字符串 |
sha1(String data) | SHA1加密,生成16进制SHA1字符串 |
sha256() | SHA256加密 例: SHA256加密:sha256().digest(data) SHA256加密并转为16进制字符串:sha256().digestHex(data) |
sha256(File dataFile) | SHA256加密文件,生成16进制SHA256字符串 |
sha256(InputStream data) | SHA256加密,生成16进制SHA256字符串 |
sha256(String data) | SHA256加密,生成16进制SHA256字符串 |
sign(SignAlgorithm algorithm) | 创建签名算法对象 生成新的私钥公钥对 |
sign(SignAlgorithm algorithm, byte[] privateKey, byte[] publicKey) | 创建Sign算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证 |
sign(SignAlgorithm algorithm, String privateKeyBase64, String publicKeyBase64) | 创建签名算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证 |
signParams(DigestAlgorithm digestAlgorithm, Map,?> params, String... otherParams) | 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值 |
signParams(DigestAlgorithm digestAlgorithm, Map,?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams) | 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 |
signParams(SymmetricCrypto crypto, Map,?> params, String... otherParams) | 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值 |
signParams(SymmetricCrypto crypto, Map,?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams) | 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 |
signParamsMd5(Map,?> params, String... otherParams) | 对参数做md5签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值 |
signParamsSha1(Map,?> params, String... otherParams) | 对参数做Sha1签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值 |
signParamsSha256(Map,?> params, String... otherParams) | 对参数做Sha256签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值 |
zuc128(byte[] key, byte[] iv) | 祖冲之算法集(ZUC-128算法)实现,基于BouncyCastle实现。 |
zuc256(byte[] key, byte[] iv) | 祖冲之算法集(ZUC-256算法)实现,基于BouncyCastle实现。 |
SmUtil
SM国密算法工具类
此工具类依赖org.bouncycastle:bcprov-jdk15to18
DigestUtil
摘要算法工具类
DbUtil
数据库操作工具类
StatementUtil
Statement和PreparedStatement工具类
DriverUtil
驱动相关工具类,包括自动获取驱动类名
方法 | 介绍 |
---|---|
identifyDriver(Connection conn) | 识别JDBC驱动名 |
identifyDriver(DataSource ds) | 识别JDBC驱动名 |
identifyDriver(String nameContainsProductInfo) | 通过JDBC URL等信息识别JDBC驱动名 |
MetaUtil
数据库元数据信息工具类
方法 | 介绍 |
---|---|
createLimitedEntity(DataSource ds, String tableName) | 创建带有字段限制的Entity对象 此方法读取数据库中对应表的字段列表,加入到Entity中,当Entity被设置内容时,会忽略对应表字段外的所有KEY |
getCataLog(Connection conn) | 获取catalog,获取失败返回null |
getColumnNames(DataSource ds, String tableName) | 获得表的所有列名 |
getColumnNames(ResultSet rs) | 获得结果集的所有列名 |
getSchema(Connection conn) | 获取schema,获取失败返回null |
getTableMeta(DataSource ds, String tableName) | 获得表的元信息 注意如果需要获取注释,某些数据库如MySQL,需要在配置中添加: |
getTables(DataSource ds) | 获得所有表名 |
getTables(DataSource ds, String schema, String tableName, TableType... types) | 获得所有表名 |
getTables(DataSource ds, String schema, TableType... types) | 获得所有表名 |
getTables(DataSource ds, TableType... types) | 获得所有表名 |
SqlUtil
SQL相关工具类,包括相关SQL语句拼接等
方法 | 介绍 |
---|---|
blobToStr(Blob blob, Charset charset) | Blob字段值转字符串 |
buildConditions(Entity entity) | 通过实体对象构建条件对象 |
buildEqualsWhere(Entity entity, List | 构件相等条件的where语句 如果没有条件语句,泽返回空串,表示没有条件 |
buildLikeValue(String value, Condition.LikeType likeType, boolean withLikeKeyword) | 创建LIKE语句中的值,创建的结果为: |
clobToStr(Clob clob) | Clob字段值转字符串 |
createBlob(Connection conn, byte[] data) | 创建Blob对象 |
createBlob(Connection conn, InputStream dataStream, boolean closeAfterUse) | 创建Blob对象 |
formatSql(String sql) | 格式化SQL |
rowIdToString(RowId rowId) | 将RowId转为字符串 |
toSqlDate(Date date) | 转换为Date |
toSqlTimestamp(Date date) | 转换为Timestamp |
SensitiveUtil
敏感词工具类
CglibUtil
Cglib工具类
方法 | 介绍 |
---|---|
copy(Object source, Class |
拷贝Bean对象属性到目标类型 此方法通过指定目标类型自动创建之,然后拷贝属性 |
copy(Object source, Class |
拷贝Bean对象属性 此方法通过指定目标类型自动创建之,然后拷贝属性 |
copy(Object source, Object target) | 拷贝Bean对象属性 |
copy(Object source, Object target, net.sf.cglib.core.Converter converter) | 拷贝Bean对象属性 |
copyList(Collection |
拷贝List Bean对象属性 |
copyList(Collection |
拷贝List Bean对象属性 |
copyList(Collection |
拷贝List Bean对象属性 |
copyList(Collection |
拷贝List Bean对象属性 |
fillBean(Map map, T bean) | 将Map中的内容填充至Bean中 |
toBean(Map map, Class |
将Map转换为Bean |
toMap(Object bean) | 将Bean转换为Map |
CompressUtil
压缩工具类
基于commons-compress的压缩解压封装
方法 | 介绍 |
---|---|
createArchiver(Charset charset, String archiverName, File file) | 创建归档器,支持: ArchiveStreamFactory.AR ArchiveStreamFactory.CPIO ArchiveStreamFactory.JAR ArchiveStreamFactory.TAR ArchiveStreamFactory.ZIP ArchiveStreamFactory.SEVEN_Z |
createArchiver(Charset charset, String archiverName, OutputStream out) | 创建归档器,支持: ArchiveStreamFactory.AR ArchiveStreamFactory.CPIO ArchiveStreamFactory.JAR ArchiveStreamFactory.TAR ArchiveStreamFactory.ZIP ArchiveStreamFactory.SEVEN_Z |
createExtractor(Charset charset, File file) | 创建归档解包器,支持: ArchiveStreamFactory.AR ArchiveStreamFactory.CPIO ArchiveStreamFactory.JAR ArchiveStreamFactory.TAR ArchiveStreamFactory.ZIP ArchiveStreamFactory.SEVEN_Z |
createExtractor(Charset charset, InputStream in) | 创建归档解包器,支持: ArchiveStreamFactory.AR ArchiveStreamFactory.CPIO ArchiveStreamFactory.JAR ArchiveStreamFactory.TAR ArchiveStreamFactory.ZIP ArchiveStreamFactory.SEVEN_Z |
createExtractor(Charset charset, String archiverName, File file) | 创建归档解包器,支持: ArchiveStreamFactory.AR ArchiveStreamFactory.CPIO ArchiveStreamFactory.JAR ArchiveStreamFactory.TAR ArchiveStreamFactory.ZIP ArchiveStreamFactory.SEVEN_Z |
createExtractor(Charset charset, String archiverName, InputStream in) | 创建归档解包器,支持: ArchiveStreamFactory.AR ArchiveStreamFactory.CPIO ArchiveStreamFactory.JAR ArchiveStreamFactory.TAR ArchiveStreamFactory.ZIP ArchiveStreamFactory.SEVEN_Z |
getIn(String compressorName, InputStream in) | 获取压缩输入流,用于解压缩指定内容,支持的格式例如: |
getOut(String compressorName, OutputStream out) | 获取压缩输出流,用于压缩指定内容,支持的格式例如: |
EmojiUtil
基于https://github.com/vdurmont/emoji-java的Emoji表情工具类
方法 | 介绍 |
---|---|
containsEmoji(String str) | 是否包含Emoji表情的Unicode符 |
extractEmojis(String str) | 提取字符串中所有的Emoji Unicode |
get(String alias) | 通过别名获取Emoji |
getByTag(String tag) | 通过tag方式获取对应的所有Emoji表情 |
isEmoji(String str) | 是否为Emoji表情的Unicode符 |
removeAllEmojis(String str) | 去除字符串中所有的Emoji Unicode字符 |
toAlias(String str) | 将字符串中的Unicode Emoji字符转换为别名表现形式(两个":"包围的格式) |
toAlias(String str, com.vdurmont.emoji.EmojiParser.FitzpatrickAction fitzpatrickAction) | 将字符串中的Unicode Emoji字符转换为别名表现形式(两个":"包围的格式),别名后会增加" |
toHtml(String str) | 将字符串中的Unicode Emoji字符转换为HTML表现形式 |
toHtmlHex(String str) | 将字符串中的Unicode Emoji字符转换为HTML 16进制表现形式 |
toUnicode(String str) | 将子串中的Emoji别名(两个":"包围的格式)和其HTML表示形式替换为为Unicode Emoji符号 |
ExpressionUtil
表达式引擎工具类
方法 | 介绍 |
---|---|
eval(String expression, Map<String,Object> context) | 执行表达式 |
getEngine() | 获得全局单例的表达式引擎 |
InternalMailUtil
邮件内部工具类
方法 | 介绍 |
---|---|
encodeText(String text, Charset charset) | 编码中文字符 编码失败返回原字符串 |
parseAddress(String address, Charset charset) | 将一个地址字符串解析为多个地址 地址间使用" "、","、";"分隔 |
parseAddressFromStrs(String[] addrStrs, Charset charset) | 将多个字符串邮件地址转为InternetAddress列表 单个字符串地址可以是多个地址合并的字符串 |
parseFirstAddress(String address, Charset charset) | 解析第一个地址 |
MailUtil
邮件工具类,基于javax.mail封装
PinyinUtil
拼音工具类,封装了TinyPinyin、JPinyin、Pinyin4j,通过SPI自动识别。
方法 | 介绍 |
---|---|
getEngine() | 获得全局单例的拼音引擎 |
getFirstLetter(char c) | 将输入字符串转为拼音首字母,其它字符原样返回 |
getFirstLetter(String str, String separator) | 将输入字符串转为拼音首字母,其它字符原样返回 |
getPinyin(char c) | 如果c为汉字,则返回大写拼音;如果c不是汉字,则返回String.valueOf(c) |
getPinyin(String str) | 将输入字符串转为拼音,每个字之间的拼音使用空格分隔 |
getPinyin(String str, String separator) | 将输入字符串转为拼音,以字符为单位插入分隔符 |
isChinese(char c) | 是否为中文字符 |
QrCodeUtil
基于Zxing的二维码工具类,支持: 二维码生成和识别,见
BarcodeFormat.QR_CODE
条形码生成和识别,见BarcodeFormat.CODE_39
等很多标准格式
ServletUtil
Servlet相关工具类封装
SpringUtil
Spring(Spring boot)工具封装,包括: Spring IOC容器中的bean对象获取 注册和注销Bean
GanymedUtil
Ganymed-SSH2封装,见:http://www.ganymed.ethz.ch/ssh2/
JschUtil
Jsch工具类
Jsch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。
它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等。
TemplateUtil
模板工具类
方法 | 介绍 |
---|---|
createEngine() | 根据用户引入的模板引擎jar,自动创建对应的模板引擎对象,使用默认配置 推荐创建的引擎单例使用,此方法每次调用会返回新的引擎 |
createEngine(TemplateConfig config) | 根据用户引入的模板引擎jar,自动创建对应的模板引擎对象 推荐创建的引擎单例使用,此方法每次调用会返回新的引擎 |
TokenizerUtil
分词工具类
方法 | 介绍 |
---|---|
createEngine() | 根据用户引入的分词引擎jar,自动创建对应的分词引擎对象 |
ValidationUtil
java bean 校验工具类,此工具类基于validation-api(jakarta.validation-api)封装
方法 | 介绍 |
---|---|
getValidator() | 获取原生Validator 对象 |
validate(T bean, Class<?>... groups) | 校验对象 |
validateProperty(T bean, String propertyName, Class<?>... groups) | 校验bean的某一个属性 |
warpValidate(T bean, Class<?>... groups) | 校验对象 |
warpValidateProperty(T bean, String propertyName, Class<?>... groups) | 校验bean的某一个属性 |
HtmlUtil
HTML工具类
方法 | 介绍 |
---|---|
cleanHtmlTag(String content) | 清除所有HTML标签,但是不删除标签内的内容 |
escape(String text) | 转义文本中的HTML字符为安全的字符,以下字符被转义: ' 替换为 ' (' doesn't work in HTML4) " 替换为 " & 替换为 & < 替换为 < > 替换为 > |
filter(String htmlContent) | 过滤HTML文本,防止XSS攻击 |
removeAllHtmlAttr(String content, String... tagNames) | 去除指定标签的所有属性 |
removeHtmlAttr(String content, String... attrs) | 去除HTML标签中的属性,如果多个标签有相同属性,都去除 |
removeHtmlTag(String content, boolean withTagContent, String... tagNames) | 清除指定HTML标签 不区分大小写 |
removeHtmlTag(String content, String... tagNames) | 清除指定HTML标签和被标签包围的内容 不区分大小写 |
unescape(String htmlStr) | 还原被转义的HTML特殊字符 |
unwrapHtmlTag(String content, String... tagNames) | 清除指定HTML标签,不包括内容 不区分大小写 |
HttpUtil
Http请求工具类
UserAgentUtil
User-Agent工具类
方法 | 介绍 |
---|---|
parse(String userAgentString) | 解析User-Agent |
SoapUtil
SOAP相关工具类
方法 | 介绍 |
---|---|
createClient(String url) | 创建SOAP客户端,默认使用soap1.1版本协议 |
createClient(String url, SoapProtocol protocol) | 创建SOAP客户端 |
createClient(String url, SoapProtocol protocol, String namespaceURI) | 创建SOAP客户端 |
toString(SOAPMessage message, boolean pretty) | SOAPMessage 转为字符串 |
toString(SOAPMessage message, boolean pretty, Charset charset) | SOAPMessage 转为字符串 |
InternalJSONUtil
内部JSON工具类,仅用于JSON内部使用
方法 | 介绍 |
---|---|
stringToValue(String string) | 尝试转换字符串为number, boolean, or null,无法转换返回String |
JSONUtil
JSON工具类
方法 | 介绍 |
---|---|
createArray() | 创建 JSONArray |
createArray(JSONConfig config) | 创建 JSONArray |
createObj() | 创建JSONObject |
createObj(JSONConfig config) | 创建JSONObject |
escape(String str) | 转义显示不可见字符 |
formatJsonStr(String jsonStr) | 格式化JSON字符串,此方法并不严格检查JSON的格式正确与否 |
getByPath(JSON json, String expression) | 通过表达式获取JSON中嵌套的对象 .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 |
getByPath(JSON json, String expression, T defaultValue) | 通过表达式获取JSON中嵌套的对象 .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 |
isJson(String str) | 是否为JSON字符串,首尾都为大括号或中括号判定为JSON字符串 |
isJsonArray(String str) | 是否为JSONArray字符串,首尾都为中括号判定为JSONArray字符串 |
isJsonObj(String str) | 是否为JSONObject字符串,首尾都为大括号判定为JSONObject字符串 |
isNull(Object obj) | 是否为null对象,null的情况包括: |
parse(Object obj) | 转换对象为JSON,如果用户不配置JSONConfig,则JSON的有序与否与传入对象有关。 支持的对象: String: 转换为相应的对象 Array、Iterable、Iterator:转换为JSONArray Bean对象:转为JSONObject |
parse(Object obj, JSONConfig config) | 转换对象为JSON,如果用户不配置JSONConfig,则JSON的有序与否与传入对象有关。 支持的对象: String: 转换为相应的对象 Array、Iterable、Iterator:转换为JSONArray Bean对象:转为JSONObject |
parseArray(Object arrayOrCollection) | JSON字符串转JSONArray |
parseArray(Object arrayOrCollection, boolean ignoreNullValue) | JSON字符串转JSONArray |
parseArray(Object arrayOrCollection, JSONConfig config) | JSON字符串转JSONArray |
parseArray(String jsonStr) | JSON字符串转JSONArray |
parseFromXml(String xmlStr) | XML字符串转为JSONObject |
parseObj(Object obj) | JSON字符串转JSONObject对象 此方法会忽略空值,但是对JSON字符串不影响 |
parseObj(Object obj, boolean ignoreNullValue) | JSON字符串转JSONObject对象 |
parseObj(Object obj, boolean ignoreNullValue, boolean isOrder) | JSON字符串转JSONObject对象 |
parseObj(Object obj, JSONConfig config) | JSON字符串转JSONObject对象 此方法会忽略空值,但是对JSON字符串不影响 |
parseObj(String jsonStr) | JSON字符串转JSONObject对象 |
putByPath(JSON json, String expression, Object value) | 设置表达式指定位置(或filed对应)的值 若表达式指向一个JSONArray则设置其坐标对应位置的值,若指向JSONObject则put对应key的值 注意:如果为JSONArray,则设置值得下标不能大于已有JSONArray的长度 .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表达式,可以获取集合等对象中对应index的值 |
putDeserializer(Type type, JSONDeserializer<?> deserializer) | 加入自定义的反序列化器 |
putSerializer(Type type, JSONArraySerializer<?> serializer) | 加入自定义的序列化器 |
putSerializer(Type type, JSONObjectSerializer<?> serializer) | 加入自定义的序列化器 |
quote(String string) | 对所有双引号做转义处理(使用双反斜杠做转义) 为了能在HTML中较好的显示,会将</转义为</ JSON字符串中不能包含控制字符和未经转义的引号和反斜杠 |
quote(String string, boolean isWrap) | 对所有双引号做转义处理(使用双反斜杠做转义) 为了能在HTML中较好的显示,会将</转义为</ JSON字符串中不能包含控制字符和未经转义的引号和反斜杠 |
quote(String str, Writer writer) | 对所有双引号做转义处理(使用双反斜杠做转义) 为了能在HTML中较好的显示,会将</转义为</ JSON字符串中不能包含控制字符和未经转义的引号和反斜杠 |
quote(String str, Writer writer, boolean isWrap) | 对所有双引号做转义处理(使用双反斜杠做转义) 为了能在HTML中较好的显示,会将</转义为</ JSON字符串中不能包含控制字符和未经转义的引号和反斜杠 |
readJSON(File file, Charset charset) | 读取JSON |
readJSONArray(File file, Charset charset) | 读取JSONArray |
readJSONObject(File file, Charset charset) | 读取JSONObject |
toBean(JSONObject json, Class |
转为实体类对象,转换异常将被抛出 |
toBean(JSON json, Type beanType, boolean ignoreError) | 转为实体类对象 |
toBean(JSON json, TypeReference |
转为实体类对象 |
toBean(String jsonString, Class |
JSON字符串转为实体类对象,转换异常将被抛出 |
toBean(String jsonString, Type beanType, boolean ignoreError) | JSON字符串转为实体类对象,转换异常将被抛出 |
toBean(String jsonString, TypeReference |
JSON字符串转为实体类对象,转换异常将被抛出 |
toJsonPrettyStr(JSON json) | 转为JSON字符串 |
toJsonPrettyStr(Object obj) | 转换为格式化后的JSON字符串 |
toJsonStr(JSON json) | 转为JSON字符串 |
toJsonStr(JSON json, int indentFactor) | 转为JSON字符串 |
toJsonStr(JSON json, Writer writer) | 转为JSON字符串,并写出到write |
toJsonStr(Object obj) | 转换为JSON字符串 |
toJsonStr(Object obj, JSONConfig jsonConfig) | 转换为JSON字符串 |
toJsonStr(Object obj, Writer writer) | 转换为JSON字符串并写出到writer |
toList(JSONArray jsonArray, Class |
将JSONArray转换为Bean的List,默认为ArrayList |
toList(String jsonArray, Class |
将JSONArray字符串转换为Bean的List,默认为ArrayList |
toXmlStr(JSON json) | 转换为XML字符串 |
wrap(Object object, JSONConfig jsonConfig) | 在需要的时候包装对象 包装包括: null =》 JSONNull.NULL array or collection =》 JSONArray map =》 JSONObject standard property (Double, String, et al) =》 原对象 来自于java包 =》 字符串 其它 =》 尝试包装为JSONObject,否则返回null |
xmlToJson(String xml) | XML转JSONObject 转换过程中一些信息可能会丢失,JSON中无法区分节点和属性,相同的节点将被处理为JSONArray。 |
JWTUtil
JSON Web Token (JWT)工具类
方法 | 介绍 |
---|---|
createToken(Map<String,Object> payload, byte[] key) | 创建HS256(HmacSHA256) JWT Token |
createToken(Map<String,Object> payload, JWTSigner signer) | 创建JWT Token |
createToken(Map<String,Object> headers, Map<String,Object> payload, byte[] key) | 创建HS256(HmacSHA256) JWT Token |
createToken(Map<String,Object> headers, Map<String,Object> payload, JWTSigner signer) | 创建JWT Token |
parseToken(String token) | 解析JWT Token |
verify(String token, byte[] key) | 验证JWT Token有效性 |
verify(String token, JWTSigner signer) | 验证JWT Token有效性 |
AlgorithmUtil
算法工具类,算法和JWT算法ID对应表
方法 | 介绍 |
---|---|
getAlgorithm(String idOrAlgorithm) | 获取算法,用户传入算法ID返回算法名,传入算法名返回本身 |
getId(String idOrAlgorithm) | 获取算法ID,用户传入算法名返回ID,传入算法ID返回本身 |
JWTSignerUtil
JWT签名器工具类
方法 | 介绍 |
---|---|
createSigner(String algorithmId, byte[] key) | 创建签名器 |
createSigner(String algorithmId, Key key) | 创建签名器 |
createSigner(String algorithmId, KeyPair keyPair) | 创建签名器 |
es256(Key key) | ES256(SHA256withECDSA)签名器 |
es384(Key key) | ES384(SHA383withECDSA)签名器 |
es512(Key key) | ES512(SHA512withECDSA)签名器 |
hs256(byte[] key) | HS256(HmacSHA256)签名器 |
hs384(byte[] key) | HS384(HmacSHA384)签名器 |
hs512(byte[] key) | HS512(HmacSHA512)签名器 |
none() | 无签名 |
rs256(Key key) | RS256(SHA256withRSA)签名器 |
rs384(Key key) | RS384(SHA384withRSA)签名器 |
rs512(Key key) | RS512(SHA512withRSA)签名器 |
ExcelDateUtil
ExcelExtractor
工具封装
ExcelExtractorUtil
Excel文件工具类
方法 | 介绍 |
---|---|
getExtractor(org.apache.poi.ss.usermodel.Workbook wb) | 获取 ExcelExtractor 对象 |
readAsText(org.apache.poi.ss.usermodel.Workbook wb, boolean withSheetName) | 读取为文本格式 使用ExcelExtractor 提取Excel内容 |
ExcelFileUtil
Excel图片工具类
方法 | 介绍 |
---|---|
isXls(InputStream in) | 是否为XLS格式的Excel文件(HSSF) XLS文件主要用于Excel 97~2003创建 此方法会自动调用InputStream.reset()方法 |
isXlsx(File file) | 是否为XLSX格式的Excel文件(XSSF) XLSX文件主要用于Excel 2007+创建 |
isXlsx(InputStream in) | 是否为XLSX格式的Excel文件(XSSF) XLSX文件主要用于Excel 2007+创建 此方法会自动调用InputStream.reset()方法 |
ExcelPicUtil
Excel读取器
读取Excel工作簿
方法 | 介绍 |
---|---|
getPicMap(org.apache.poi.ss.usermodel.Workbook workbook, int sheetIndex) | 获取工作簿指定sheet中图片列表 |
ExcelUtil
Excel 写入器
此工具用于通过POI将数据写出到Excel,此对象可完成以下两个功能
方法 | 介绍 |
---|---|
colNameToIndex(String colName) | 根据表元的列名转换为列号 |
getBigWriter() | 获得BigExcelWriter,默认写出到第一个sheet 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件 |
getBigWriter(File destFile) | 获得BigExcelWriter,默认写出到第一个sheet,名字为sheet1 |
getBigWriter(File destFile, String sheetName) | 获得BigExcelWriter |
getBigWriter(int rowAccessWindowSize) | 获得BigExcelWriter,默认写出到第一个sheet 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件 |
getBigWriter(String destFilePath) | 获得BigExcelWriter,默认写出到第一个sheet |
getBigWriter(String destFilePath, String sheetName) | 获得BigExcelWriter |
getReader(File bookFile) | 获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 默认调用第一个sheet |
getReader(File bookFile, int sheetIndex) | 获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 |
getReader(File bookFile, String sheetName) | 获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 |
getReader(InputStream bookStream) | 获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 默认调用第一个sheet,读取结束自动关闭流 |
getReader(InputStream bookStream, int sheetIndex) | 获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 读取结束自动关闭流 |
getReader(InputStream bookStream, String sheetName) | 获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 读取结束自动关闭流 |
getReader(String bookFilePath) | 获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 默认调用第一个sheet |
getReader(String bookFilePath, int sheetIndex) | 获取Excel读取器,通过调用ExcelReader的read或readXXX方法读取Excel内容 |
getWriter() | 获得ExcelWriter,默认写出到第一个sheet 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件 |
getWriter(boolean isXlsx) | 获得ExcelWriter,默认写出到第一个sheet 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流 若写出到文件,还需调用ExcelWriter.setDestFile(File)方法自定义写出的文件,然后调用ExcelWriter.flush()方法写出到文件 |
getWriter(File destFile) | 获得ExcelWriter,默认写出到第一个sheet,名字为sheet1 |
getWriter(File destFile, String sheetName) | 获得ExcelWriter |
getWriter(String destFilePath) | 获得ExcelWriter,默认写出到第一个sheet |
getWriter(String destFilePath, String sheetName) | 获得ExcelWriter |
getWriterWithSheet(String sheetName) | 获得ExcelWriter,默认写出到第一个sheet |
indexToColName(int index) | 将Sheet列号变为列名 |
readBySax(File file, int rid, RowHandler rowHandler) | 通过Sax方式读取Excel,同时支持03和07格式 |
readBySax(File file, String idOrRidOrSheetName, RowHandler rowHandler) | 通过Sax方式读取Excel,同时支持03和07格式 |
readBySax(InputStream in, int rid, RowHandler rowHandler) | 通过Sax方式读取Excel,同时支持03和07格式 |
readBySax(InputStream in, String idOrRidOrSheetName, RowHandler rowHandler) | 通过Sax方式读取Excel,同时支持03和07格式 |
readBySax(String path, int rid, RowHandler rowHandler) | 通过Sax方式读取Excel,同时支持03和07格式 |
readBySax(String path, String idOrRid, RowHandler rowHandler) | 通过Sax方式读取Excel,同时支持03和07格式 |
toLocation(String locationRef) | 将Excel中地址标识符(例如A11,B5)等转换为行列表示 例如:A11 -》 x:0,y:10,B5-》x:1,y:4 |
RowUtil
样式集合,此样式集合汇集了整个工作簿的样式,用于减少样式的创建和冗余
WorkbookUtil
CellUtil
Excel表格中单元格工具类
ExcelSaxUtil
Sax方式读取Excel相关工具类
StyleUtil
Excel样式工具类
DocUtil
Word Document工具
方法 | 介绍 |
---|---|
create(File file) | 创建XWPFDocument,如果文件已存在则读取之,否则创建新的 |
TableUtil
Word中表格相关工具
WordUtil
Word工具类
方法 | 介绍 |
---|---|
getWriter() | 创建Word 07格式的生成器 |
getWriter(File destFile) | 创建Word 07格式的生成器 |
ScriptUtil
脚本工具类
方法 | 介绍 |
---|---|
compile(ScriptEngine engine, String script) | 编译Javascript脚本 |
compile(String script) | 编译Javascript脚本 |
createGroovyEngine() | 创建Groovy引擎 需要引入org.codehaus.groovy:groovy-all |
createJsEngine() | 创建新的JavaScript引擎 |
createLuaEngine() | 创建Lua引擎 需要引入org.luaj:luaj-jse |
createPythonEngine() | 创建Python引擎 需要引入org.python:jython |
createScript(String nameOrExtOrMime) | 创建 ScriptEngine 实例 |
eval(String script) | 执行有返回值的Javascript脚本 |
eval(String script, Bindings bindings) | 执行有返回值的脚本 |
eval(String script, ScriptContext context) | 执行有返回值的脚本 |
evalInvocable(String script) | 执行Javascript脚本,返回Invocable,此方法分为两种情况: 执行的脚本返回值是可执行的脚本方法 脚本为函数库,则ScriptEngine本身为可执行方法 |
getGroovyEngine() | 获得单例的Groovy引擎 需要引入org.codehaus.groovy:groovy-all |
getJavaScriptEngine() | 获得非单例的 Javascript引擎 JavaScriptEngine |
getJsEngine() | 获得单例的JavaScript引擎 |
getLuaEngine() | 获得单例的Lua引擎 需要引入org.luaj:luaj-jse |
getPythonEngine() | 获得单例的Python引擎 需要引入org.python:jython |
getScript(String nameOrExtOrMime) | 获得单例的ScriptEngine 实例 |
invoke(String script, String func, Object... args) | 执行JS脚本中的指定方法 |
SettingUtil
Setting工具类
提供静态方法获取配置文件
方法 | 介绍 |
---|---|
get(String name) | 获取当前环境下的配置文件 name可以为不包括扩展名的文件名(默认.setting为结尾),也可以是文件名全称 |
getFirstFound(String... names) | 获取给定路径找到的第一个配置文件 * name可以为不包括扩展名的文件名(默认.setting为结尾),也可以是文件名全称 |
PropsUtil
Props工具类
提供静态方法获取配置文件
方法 | 介绍 |
---|---|
get(String name) | 获取当前环境下的配置文件 name可以为不包括扩展名的文件名(默认.properties),也可以是文件名全称 |
getFirstFound(String... names) | 获取给定路径找到的第一个配置文件 * name可以为不包括扩展名的文件名(默认.properties为结尾),也可以是文件名全称 |
getSystemProps() | 获取系统参数,例如用户在执行java命令时定义的 -Duse=hutool |
YamlUtil
基于Snakeyaml的的YAML读写工具
方法 | 介绍 |
---|---|
dump(Object object, Writer writer) | 将Bean对象或者Map写出到Writer |
dump(Object object, Writer writer, org.yaml.snakeyaml.DumperOptions dumperOptions) | 将Bean对象或者Map写出到Writer |
load(InputStream in, Class |
从流中加载YAML |
load(Reader reader) | 加载YAML,加载完毕后关闭Reader |
load(Reader reader, Class |
加载YAML,加载完毕后关闭Reader |
load(Reader reader, Class |
加载YAML |
loadByPath(String path) | 从classpath或绝对路径加载YAML文件 |
loadByPath(String path, Class |
从classpath或绝对路径加载YAML文件 |
SocketUtil
Socket相关工具类
方法 | 介绍 |
---|---|
connect(InetSocketAddress address, int connectionTimeout) | 创建Socket并连接到指定地址的服务器 |
connect(String hostname, int port) | 创建Socket并连接到指定地址的服务器 |
connect(String hostname, int port, int connectionTimeout) | 创建Socket并连接到指定地址的服务器 |
getRemoteAddress(AsynchronousSocketChannel channel) | 获取远程端的地址信息,包括host和端口 null表示channel为null或者远程主机未连接 |
isConnected(AsynchronousSocketChannel channel) | 远程主机是否处于连接状态 通过判断远程地址获取成功与否判断 |
NioUtil
NIO工具类
方法 | 介绍 |
---|---|
registerChannel(Selector selector, SelectableChannel channel, Operation ops) | 注册通道的指定操作到指定Selector上 |
SystemUtil
Java的System类封装工具类。
参考:http://blog.csdn.net/zhongweijian/article/details/7619383
方法 | 介绍 |
---|---|
append(StringBuilder builder, String caption, Object value) | 输出到StringBuilder。 |
dumpSystemInfo() | 将系统信息输出到System.out中。 |
dumpSystemInfo(PrintWriter out) | 将系统信息输出到指定PrintWriter中。 |
get(String key) | 获得System属性 |
get(String name, boolean quiet) | 取得系统属性,如果因为Java安全的限制而失败,则将错误打在Log中,然后返回 null |
get(String name, String defaultValue) | 取得系统属性,如果因为Java安全的限制而失败,则将错误打在Log中,然后返回 defaultValue |
getBoolean(String key, boolean defaultValue) | 获得boolean类型值 |
getClassLoadingMXBean() | 返回Java虚拟机类加载系统相关属性 |
getCompilationMXBean() | 返回Java虚拟机编译系统相关属性 如果没有编译系统,则返回null |
getCurrentPID() | 获取当前进程 PID |
getFreeMemory() | 获取JVM中内存剩余大小 |
getGarbageCollectorMXBeans() | 获取Java虚拟机中的GarbageCollectorMXBean列表 |
getHostInfo() | 取得Host的信息。 |
getInt(String key, int defaultValue) | 获得int类型值 |
getJavaInfo() | 取得Java Implementation的信息。 |
getJavaRuntimeInfo() | 取得当前运行的JRE的信息。 |
getJavaSpecInfo() | 取得Java Specification的信息。 |
getJvmInfo() | 取得Java Virtual Machine Implementation的信息。 |
getJvmSpecInfo() | 取得Java Virtual Machine Specification的信息。 |
getLong(String key, long defaultValue) | 获得long类型值 |
getMaxMemory() | 获取JVM可用的内存总大小 |
getMemoryManagerMXBeans() | 获取Java虚拟机中的MemoryManagerMXBean列表 The Java virtual machine can have one or more memory managers. |
getMemoryMXBean() | 返回Java虚拟机内存系统相关属性 |
getMemoryPoolMXBeans() | 获取Java虚拟机中的MemoryPoolMXBean列表 The Java virtual machine can have one or more memory pools. |
getOperatingSystemMXBean() | 返回Java虚拟机运行下的操作系统相关信息属性 |
getOsInfo() | 取得OS的信息。 |
getRuntimeInfo() | 取得Runtime的信息。 |
getRuntimeMXBean() | 返回Java虚拟机运行时系统相关属性 |
getThreadMXBean() | 返回Java虚拟机线程系统相关属性 |
getTotalMemory() | 获取JVM中内存总大小 |
getTotalThreadCount() | 获取总线程数 |
getUserInfo() | 取得User的信息。 |
props() |
OshiUtil
Oshi库封装的工具类,通过此工具类,可获取系统、硬件相关信息
方法 | 介绍 |
---|---|
getCpuInfo() | 获取系统CPU 系统使用率、用户使用率、利用率等等 相关信息 默认间隔1秒 |
getCpuInfo(long waitingTime) | 获取系统CPU 系统使用率、用户使用率、利用率等等 相关信息 |
getCurrentProcess() | 获取当前进程信息OSProcess |
getDiskStores() | 获取磁盘相关信息,可能有多个磁盘(包括可移动磁盘等) |
getHardware() | 获取硬件相关信息,包括内存、硬盘、网络设备、显示器、USB、声卡等 |
getMemory() | 获取内存相关信息,比如总内存、可用内存等 |
getNetworkIFs() | 获取网络相关信息,可能多块网卡 |
getOs() | 获取操作系统相关信息,包括系统版本、文件系统、进程等 |
getProcessor() | 获取CPU(处理器)相关信息,比如CPU负载等 |
getSensors() | 获取传感器相关信息,例如CPU温度、风扇转速等,传感器可能有多个 |
getSystem() | 获取BIOS中计算机相关信息,比如序列号、固件版本等 |