diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-11-04 00:24:53 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-04 00:24:53 -0400 |
commit | d8bd4d6c76de9ae2c03d59646c55673c1e8e30e1 (patch) | |
tree | 4eb0234e3292fc9b37e807770c789ff63d2f18c5 /src/main/java/de/hysky/skyblocker/utils | |
parent | a309de2e02d4c635983bf181ca23b7e119edab56 (diff) | |
parent | 0d738a4bd470a4f5608f59cb88c0aba33b1ac4fc (diff) | |
download | Skyblocker-d8bd4d6c76de9ae2c03d59646c55673c1e8e30e1.tar.gz Skyblocker-d8bd4d6c76de9ae2c03d59646c55673c1e8e30e1.tar.bz2 Skyblocker-d8bd4d6c76de9ae2c03d59646c55673c1e8e30e1.zip |
Merge pull request #404 from AzureAaron/nio-refactor
NIO Refactor
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/utils')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java b/src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java index 6d78b3f3..870e94da 100644 --- a/src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java +++ b/src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java @@ -14,10 +14,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import java.util.concurrent.CompletableFuture; +import java.util.stream.Stream; /** * Initializes the NEU repo, which contains item metadata and fairy souls location data. Clones the repo if it does not exist and checks for updates. Use {@link #runAsyncAfterLoad(Runnable)} to run code after the repo is initialized. @@ -74,8 +76,7 @@ public class NEURepoManager { CompletableFuture.runAsync(() -> { try { ItemRepository.setFilesImported(false); - File dir = NEURepoManager.LOCAL_REPO_DIR.toFile(); - recursiveDelete(dir); + recursiveDelete(NEURepoManager.LOCAL_REPO_DIR); } catch (Exception ex) { if (MinecraftClient.getInstance().player != null) MinecraftClient.getInstance().player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.updaterepository.failed")), false); @@ -86,14 +87,18 @@ public class NEURepoManager { } @SuppressWarnings("ResultOfMethodCallIgnored") - private static void recursiveDelete(File dir) { - File[] children; - if (dir.isDirectory() && !Files.isSymbolicLink(dir.toPath()) && (children = dir.listFiles()) != null) { - for (File child : children) { - recursiveDelete(child); - } + private static void recursiveDelete(Path dir) throws IOException { + 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); + } + }); } - dir.delete(); + + Files.delete(dir); } /** |