From 8eaa59f0ce238a50b5354c88f36e23b492ce0406 Mon Sep 17 00:00:00 2001 From: Uriel Date: Wed, 6 Nov 2024 12:05:32 +0100 Subject: [PATCH] tested and improved the code --- .../dev/slimevr/config/ConfigManager.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/server/core/src/main/java/dev/slimevr/config/ConfigManager.java b/server/core/src/main/java/dev/slimevr/config/ConfigManager.java index 05e57a3942..574696b994 100644 --- a/server/core/src/main/java/dev/slimevr/config/ConfigManager.java +++ b/server/core/src/main/java/dev/slimevr/config/ConfigManager.java @@ -16,6 +16,8 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.*; +import java.util.Comparator; +import java.util.stream.Stream; public class ConfigManager { @@ -118,17 +120,25 @@ public synchronized void saveConfig() { // delete accidental folder caused by PR // https://github.com/SlimeVR/SlimeVR-Server/pull/1176 var cfgFileMaybeFolder = cfgFile.toFile(); - if (cfgFileMaybeFolder.isDirectory() && cfgFileMaybeFolder.delete()) { - LogManager - .severe( - "Unable to delete folder that has same name as the config file on path \"" - + cfgFile - + "\"" - ); - return; + if (cfgFileMaybeFolder.isDirectory()) { + try (Stream pathStream = Files.walk(cfgFile)) { + var list = pathStream.sorted(Comparator.reverseOrder()).toList(); + for (var path : list) { + Files.delete(path); + } + } catch (IOException e) { + LogManager + .severe( + "Unable to delete folder that has same name as the config file on path \"" + + cfgFile + + "\"" + ); + return; + } + } - var cfgFolder = cfgFile.getParent().toFile(); - if (!cfgFolder.getAbsoluteFile().exists() && !cfgFolder.mkdirs()) { + var cfgFolder = cfgFile.toAbsolutePath().getParent().toFile(); + if (!cfgFolder.exists() && !cfgFolder.mkdirs()) { LogManager .severe("Unable to create folders for config on path \"" + cfgFile + "\""); return;