From 5f5eabca19d13781922340fbc725240f006b39f7 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Wed, 18 Feb 2026 16:36:46 +0900 Subject: [PATCH] =?UTF-8?q?=EC=95=95=EC=B6=95=ED=95=B4=EC=A0=9C=20?= =?UTF-8?q?=EC=8B=9C,=20=EB=8F=99=EC=9D=BC=20=ED=8F=B4=EB=8D=94=EA=B0=80?= =?UTF-8?q?=20=EC=9E=88=EC=9C=BC=EB=A9=B4=20=EC=82=AD=EC=A0=9C=20=ED=9B=84?= =?UTF-8?q?=20=EC=9E=AC=EC=97=85=EB=A1=9C=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cd/training/common/utils/FIleChecker.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/com/kamco/cd/training/common/utils/FIleChecker.java b/src/main/java/com/kamco/cd/training/common/utils/FIleChecker.java index 8ec3be2..12364b8 100644 --- a/src/main/java/com/kamco/cd/training/common/utils/FIleChecker.java +++ b/src/main/java/com/kamco/cd/training/common/utils/FIleChecker.java @@ -17,6 +17,7 @@ import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -725,6 +726,11 @@ public class FIleChecker { File destDir = new File(destDirectory, folderName); + // 동일 폴더가 이미 있으면 삭제 + if (destDir.exists()) { + deleteDirectoryRecursively(destDir.toPath()); + } + if (!destDir.exists()) { destDir.mkdirs(); } @@ -914,4 +920,22 @@ public class FIleChecker { if (session != null) session.disconnect(); } } + + /** ✅ 폴더 재귀 삭제 */ + private static void deleteDirectoryRecursively(Path path) throws IOException { + if (!Files.exists(path)) return; + + // 하위부터 지워야 하므로 reverse order + Files.walk(path) + .sorted(Comparator.reverseOrder()) + .forEach( + p -> { + try { + Files.deleteIfExists(p); + } catch (IOException e) { + // 여기서 바로 RuntimeException으로 올려서 상위 catch(IOException)로 잡히게 함 + throw new UncheckedIOException("폴더 삭제 실패: " + p.toAbsolutePath(), e); + } + }); + } }