diff options
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/utils/FileUtils.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/utils/FileUtils.java | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/src/main/java/de/hysky/skyblocker/utils/FileUtils.java b/src/main/java/de/hysky/skyblocker/utils/FileUtils.java index 9bec2745..59b706c4 100644 --- a/src/main/java/de/hysky/skyblocker/utils/FileUtils.java +++ b/src/main/java/de/hysky/skyblocker/utils/FileUtils.java @@ -1,29 +1,35 @@ package de.hysky.skyblocker.utils; +import com.mojang.logging.LogUtils; +import org.slf4j.Logger; + import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; - -import org.slf4j.Logger; - -import com.mojang.logging.LogUtils; +import java.util.stream.Stream; public class FileUtils { private static final Logger LOGGER = LogUtils.getLogger(); public static void recursiveDelete(Path dir) throws IOException { + if (!Files.exists(dir)) { + return; + } + if (Files.isDirectory(dir) && !Files.isSymbolicLink(dir)) { - Files.list(dir).forEach(child -> { - try { - recursiveDelete(child); - } catch (Exception e) { - LOGGER.error("[Skyblocker] Encountered an exception while deleting a file! Path: {}", child.toAbsolutePath(), e); - } - }); + try (Stream<Path> stream = Files.list(dir)) { + stream.forEach(child -> { + try { + recursiveDelete(child); + } catch (Exception e) { + LOGGER.error("[Skyblocker] Encountered an exception while deleting a file. Path: {}", child.toAbsolutePath(), e); + } + }); + } } - if (!Files.isWritable(dir)) { - dir.toFile().setWritable(true); + if (!Files.isWritable(dir) && !dir.toFile().setWritable(true)) { + LOGGER.error("[Skyblocker] Failed to make file writable. Path: {}", dir.toAbsolutePath()); } Files.delete(dir); @@ -31,7 +37,7 @@ public class FileUtils { /** * Replaces any characters that do not match the regex: [^a-z0-9_.-] - * + * * @implNote Designed to convert a file path to an {@link net.minecraft.util.Identifier} */ public static String normalizePath(Path path) { |