diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java b/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java index 8ab54f434..dbea6c5f2 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java @@ -15,7 +15,6 @@ package org.dromara.hutool.core.bean; import org.dromara.hutool.core.annotation.AnnotationUtil; import org.dromara.hutool.core.annotation.PropIgnore; import org.dromara.hutool.core.convert.Convert; -import org.dromara.hutool.core.func.LambdaUtil; import org.dromara.hutool.core.reflect.*; import org.dromara.hutool.core.reflect.method.MethodUtil; @@ -180,12 +179,9 @@ public class PropDesc { */ public Object getValue(final Object bean) { if (null != this.getter) { - try{ - return LambdaUtil.buildGetter(this.getter).apply(bean); - } catch (final Exception ignore){ - // issue#I96JIP,在jdk14+多模块项目中,存在权限问题,使用传统反射 - return MethodUtil.invoke(bean, this.getter); - } + // issue#3671 JDK15+ 修改了lambda的策略,动态生成后在metaspace不会释放,导致资源占用高 + //return LambdaUtil.buildGetter(this.getter).apply(bean); + return MethodUtil.invoke(bean, this.getter); } else if (ModifierUtil.isPublic(this.field)) { return FieldUtil.getFieldValue(bean, this.field); } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/compress/ZipUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/compress/ZipUtil.java index a947041ac..f1306a9a6 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/compress/ZipUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/compress/ZipUtil.java @@ -137,6 +137,7 @@ public class ZipUtil { } } + // region ----- zip /** * 打包到当前目录,使用默认编码UTF-8 * @@ -428,7 +429,9 @@ public class ZipUtil { return zipFile; } - // ---------------------------------------------------------------------------------------------- Unzip + // endregion + + // region ----- unzip /** * 解压到文件名相同的目录中,默认编码UTF-8 @@ -579,6 +582,47 @@ public class ZipUtil { return outFile; } + /** + * 解压
+ * ZIP条目不使用高速缓冲。 + * + * @param in zip文件流,使用完毕自动关闭 + * @param outFile 解压到的目录 + * @param charset 编码 + * @return 解压的目录 + * @throws HutoolException IO异常 + * @since 4.5.8 + */ + public static File unzip(final InputStream in, final File outFile, Charset charset) throws HutoolException { + if (null == charset) { + charset = DEFAULT_CHARSET; + } + + return unzip(new ZipInputStream(in, charset), outFile); + } + + /** + * 解压
+ * ZIP条目不使用高速缓冲。 + * + * @param zipStream zip文件流,包含编码信息 + * @param outFile 解压到的目录 + * @return 解压的目录 + * @throws HutoolException IO异常 + * @since 4.5.8 + */ + public static File unzip(final ZipInputStream zipStream, final File outFile) throws HutoolException { + try (final ZipReader reader = new ZipReader(zipStream)) { + reader.readTo(outFile); + } + return outFile; + } + + + // endregion + + // region ----- get and read + /** * 获取压缩包中的指定文件流 * @@ -621,41 +665,6 @@ public class ZipUtil { } } - /** - * 解压
- * ZIP条目不使用高速缓冲。 - * - * @param in zip文件流,使用完毕自动关闭 - * @param outFile 解压到的目录 - * @param charset 编码 - * @return 解压的目录 - * @throws HutoolException IO异常 - * @since 4.5.8 - */ - public static File unzip(final InputStream in, final File outFile, Charset charset) throws HutoolException { - if (null == charset) { - charset = DEFAULT_CHARSET; - } - return unzip(new ZipInputStream(in, charset), outFile); - } - - /** - * 解压
- * ZIP条目不使用高速缓冲。 - * - * @param zipStream zip文件流,包含编码信息 - * @param outFile 解压到的目录 - * @return 解压的目录 - * @throws HutoolException IO异常 - * @since 4.5.8 - */ - public static File unzip(final ZipInputStream zipStream, final File outFile) throws HutoolException { - try (final ZipReader reader = new ZipReader(zipStream)) { - reader.readTo(outFile); - } - return outFile; - } - /** * 读取并处理Zip流中的每一个{@link ZipEntry} * @@ -669,6 +678,10 @@ public class ZipUtil { } } + // endregion + + // region ----- unzipFileBytes + /** * 从Zip文件中提取指定的文件为bytes * @@ -721,7 +734,9 @@ public class ZipUtil { } } - // ----------------------------------------------------------------------------- Gzip + // endregion + + // region ----- gzip /** * Gzip压缩处理 @@ -790,6 +805,10 @@ public class ZipUtil { return bos.toByteArray(); } + // endregion + + // region ----- unGzip + /** * Gzip解压缩处理 * @@ -839,7 +858,9 @@ public class ZipUtil { return bos.toByteArray(); } - // ----------------------------------------------------------------------------- Zlib + // endregion + + // region ----- zlib /** * Zlib压缩处理 @@ -911,6 +932,10 @@ public class ZipUtil { return out.toByteArray(); } + // endregion + + // region ----- unZlib + /** * Zlib解压缩处理 * @@ -959,6 +984,8 @@ public class ZipUtil { return out.toByteArray(); } + // endregion + /** * 获取Zip文件中指定目录下的所有文件,只显示文件,不显示目录
* 此方法并不会关闭{@link ZipFile}。