From 1f070fc5e4f7f1b7b9fac0669a42b1243fe80966 Mon Sep 17 00:00:00 2001 From: bwcx_jzy Date: Mon, 2 Aug 2021 10:05:07 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8F=AF=E8=83=BD=E9=81=87=E5=88=B0?= =?UTF-8?q?=E5=8F=AA=E8=AF=BB=E6=96=87=E4=BB=B6=EF=BC=8C=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=88=A0=E9=99=A4=EF=BC=8C=E5=85=88=E5=B0=9D=E8=AF=95=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/hutool/core/io/FileUtil.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 3dd71a32c..1c08a045a 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,10 +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; +import java.nio.file.*; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -714,6 +711,13 @@ public class FileUtil extends PathUtil { // 删除文件或清空后的目录 try { Files.delete(file.toPath()); + } catch (AccessDeniedException access) { + // 可能遇到只读文件,无法删除,先尝试处理权限 + try { + file.setWritable(true); + } catch (Exception exception) { + throw new IORuntimeException(access); + } } catch (IOException e) { throw new IORuntimeException(e); } From 7539cfea113776e2fe340e0e9a056efca70bd48f Mon Sep 17 00:00:00 2001 From: bwcx_jzy Date: Mon, 2 Aug 2021 10:11:24 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=83=BD=E9=81=87=E5=88=B0=E5=8F=AA?= =?UTF-8?q?=E8=AF=BB=E6=96=87=E4=BB=B6=EF=BC=8C=E6=97=A0=E6=B3=95=E5=88=A0?= =?UTF-8?q?=E9=99=A4.=E4=BD=BF=E7=94=A8=20file=20=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) 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 1c08a045a..a90f205c4 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 @@ -712,12 +712,8 @@ public class FileUtil extends PathUtil { try { Files.delete(file.toPath()); } catch (AccessDeniedException access) { - // 可能遇到只读文件,无法删除,先尝试处理权限 - try { - file.setWritable(true); - } catch (Exception exception) { - throw new IORuntimeException(access); - } + // 可能遇到只读文件,无法删除.使用 file 方法删除 + return file.delete(); } catch (IOException e) { throw new IORuntimeException(e); } From 46f1bc7662a393bb02934e9ca7f31ac31c436089 Mon Sep 17 00:00:00 2001 From: bwcx_jzy Date: Mon, 2 Aug 2021 10:24:50 +0800 Subject: [PATCH 3/3] file.delete sync PathUtil --- .../java/cn/hutool/core/io/file/PathUtil.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/io/file/PathUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/file/PathUtil.java index 114d7d2cb..18498e869 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/file/PathUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/file/PathUtil.java @@ -16,16 +16,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.Charset; -import java.nio.file.CopyOption; -import java.nio.file.DirectoryStream; -import java.nio.file.FileVisitOption; -import java.nio.file.FileVisitResult; -import java.nio.file.FileVisitor; -import java.nio.file.Files; -import java.nio.file.LinkOption; -import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.StandardCopyOption; +import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.EnumSet; @@ -144,7 +135,12 @@ public class PathUtil { if (isDirectory(path)) { Files.walkFileTree(path, DelVisitor.INSTANCE); } else { - Files.delete(path); + try { + Files.delete(path); + } catch (AccessDeniedException access) { + // 可能遇到只读文件,无法删除.使用 file 方法删除 + return path.toFile().delete(); + } } } catch (IOException e) { throw new IORuntimeException(e);