From 6a04f20fcf63f4661334728a11d2c3cd9b1a8999 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 19 Jul 2021 17:21:02 +0800 Subject: [PATCH] add method --- CHANGELOG.md | 2 ++ .../core/comparator/BaseFieldComparator.java | 14 ++++++-------- .../hutool/core/comparator/FieldComparator.java | 9 +++++++++ .../src/main/java/cn/hutool/core/io/FileUtil.java | 15 ++++++++++++++- hutool-db/src/test/resources/config/db.setting | 2 +- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eac03faaa..1b02f7e54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ # 5.7.6 (2021-07-19) ### 🐣新特性 +* 【core 】 增加FieldsComparator(pr#374@Gitee) +* 【core 】 FileUtil.del采用Files.delete实现 ### 🐞Bug修复 diff --git a/hutool-core/src/main/java/cn/hutool/core/comparator/BaseFieldComparator.java b/hutool-core/src/main/java/cn/hutool/core/comparator/BaseFieldComparator.java index 86db0f769..be4469dd4 100644 --- a/hutool-core/src/main/java/cn/hutool/core/comparator/BaseFieldComparator.java +++ b/hutool-core/src/main/java/cn/hutool/core/comparator/BaseFieldComparator.java @@ -12,21 +12,19 @@ import java.util.Comparator; * 参阅feilong-core中的PropertyComparator * * @param 被比较的Bean - * @author Looly + * @author jiangzeyin */ public abstract class BaseFieldComparator implements Comparator, Serializable { private static final long serialVersionUID = -3482464782340308755L; /** - * 比较器方法 + * 比较两个对象的同一个字段值 * - * @param o1 对象1 - * @param o2 对象2 - * @return -1 0 1 + * @param o1 对象1 + * @param o2 对象2 + * @param field 字段 + * @return 比较结果 */ - @Override - public abstract int compare(T o1, T o2); - protected int compareItem(T o1, T o2, Field field) { if (o1 == o2) { return 0; diff --git a/hutool-core/src/main/java/cn/hutool/core/comparator/FieldComparator.java b/hutool-core/src/main/java/cn/hutool/core/comparator/FieldComparator.java index 6ab96fe16..e56955de6 100644 --- a/hutool-core/src/main/java/cn/hutool/core/comparator/FieldComparator.java +++ b/hutool-core/src/main/java/cn/hutool/core/comparator/FieldComparator.java @@ -30,6 +30,15 @@ public class FieldComparator extends BaseFieldComparator { } } + /** + * 构造 + * + * @param field 字段 + */ + public FieldComparator(Field field) { + this.field = field; + } + @Override public int compare(T o1, T o2) { return compareItem(o1, o2, this.field); diff --git a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java index f507a94a7..a6902b823 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java @@ -40,6 +40,7 @@ import java.net.URI; import java.net.URL; import java.net.URLConnection; import java.nio.charset.Charset; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; @@ -686,9 +687,15 @@ public class FileUtil extends PathUtil { * 注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹
* 某个文件删除失败会终止删除操作 * + *

+ * 从5.7.6开始,删除文件使用{@link Files#delete(Path)}代替 {@link File#delete()}
+ * 因为前者遇到文件被占用等原因时,抛出异常,而非返回false,异常会指明具体的失败原因。 + *

+ * * @param file 文件对象 * @return 成功与否 * @throws IORuntimeException IO异常 + * @see Files#delete(Path) */ public static boolean del(File file) throws IORuntimeException { if (file == null || false == file.exists()) { @@ -705,7 +712,13 @@ public class FileUtil extends PathUtil { } // 删除文件或清空后的目录 - return file.delete(); + try { + Files.delete(file.toPath()); + } catch (IOException e) { + throw new IORuntimeException(e); + } + + return true; } /** diff --git a/hutool-db/src/test/resources/config/db.setting b/hutool-db/src/test/resources/config/db.setting index cf1699f51..cf91af97f 100644 --- a/hutool-db/src/test/resources/config/db.setting +++ b/hutool-db/src/test/resources/config/db.setting @@ -68,4 +68,4 @@ remarks = true url = jdbc:sqlserver://looly.database.chinacloudapi.cn:1433;database=test;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.chinacloudapi.cn;loginTimeout=30; user = looly@looly pass = 123 -remarks = true \ No newline at end of file +remarks = true