From 3c43e31afb202a93c133a534fa8d1bee3b43c862 Mon Sep 17 00:00:00 2001 From: zhangxun <1958638841@qq.com> Date: Sat, 5 Jul 2025 10:35:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20clean=20?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E7=9A=84=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BD=BF?= =?UTF-8?q?=E5=85=B6=E7=AC=A6=E5=90=88=E7=9B=B4=E8=A7=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jcnc/snow/pkg/tasks/CleanTask.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jcnc/snow/pkg/tasks/CleanTask.java b/src/main/java/org/jcnc/snow/pkg/tasks/CleanTask.java index 2b6da14..3022a35 100644 --- a/src/main/java/org/jcnc/snow/pkg/tasks/CleanTask.java +++ b/src/main/java/org/jcnc/snow/pkg/tasks/CleanTask.java @@ -32,16 +32,15 @@ public final class CleanTask implements Task { public void run() throws IOException { Path build = Path.of("build"); Path dist = Path.of("dist"); - deleteDir(build); - deleteDir(dist); - Files.createDirectories(build); - Files.createDirectories(dist); + deleteDir(build, false); + deleteDir(dist, false); System.out.println("[clean] done."); } /** - * 递归删除指定目录及其所有子文件和子目录。 + * 递归删除指定目录下的所有子文件和子目录。 + * 如需删除指定目录本身可将第二个参数 containSelf 设置为 true *

* 若目录不存在,则直接返回。 *

@@ -50,14 +49,18 @@ public final class CleanTask implements Task { *

* * @param dir 需要删除的目录路径 + * @param containSelf 是否删除指定目录本身 * @throws IOException 删除目录或文件过程中发生 IO 错误时抛出 */ - private void deleteDir(Path dir) throws IOException { + private void deleteDir(Path dir, boolean containSelf) throws IOException { if (Files.notExists(dir)) return; try (var stream = Files.walk(dir)) { stream.sorted(Comparator.reverseOrder()) // 先删子文件,后删父目录 .forEach(p -> { try { + if (!containSelf && p == dir) { + return; + } Files.delete(p); } catch (IOException e) { throw new RuntimeException(e);