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中计算机相关信息,比如序列号、固件版本等 |