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..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 @@ -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,9 @@ public class FileUtil extends PathUtil { // 删除文件或清空后的目录 try { Files.delete(file.toPath()); + } catch (AccessDeniedException access) { + // 可能遇到只读文件,无法删除.使用 file 方法删除 + return file.delete(); } catch (IOException e) { throw new IORuntimeException(e); } 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);