From a92ddc2099e46c58af86b66d086728e75ce4691b Mon Sep 17 00:00:00 2001 From: Vickvick2002 Date: Sun, 5 Jan 2025 11:34:20 +0100 Subject: [PATCH] =?UTF-8?q?loadBoardAsList=20Methode=20ver=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/PR2/HitoriSpiel/GUI/BoardLoader.java | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/BoardLoader.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/BoardLoader.java index f52c56e..4411bfe 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/BoardLoader.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/BoardLoader.java @@ -1,8 +1,12 @@ package PR2.HitoriSpiel.GUI; import java.io.*; +import java.net.URLDecoder; import java.util.ArrayList; +import java.util.Enumeration; import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; public class BoardLoader { @@ -27,21 +31,32 @@ public class BoardLoader { public static List loadBoardsAsList() { List boardFiles = new ArrayList<>(); try { - // Lade alle Ressourcen in "persistent/Hitori_Spielfelder/" - InputStream resourceStream = BoardLoader.class.getResourceAsStream("/persistent/Hitori_Spielfelder/"); - if (resourceStream == null) { + var resource = BoardLoader.class.getClassLoader().getResource("persistent/Hitori_Spielfelder/"); + if (resource == null) { throw new IOException("Das Verzeichnis 'persistent/Hitori_Spielfelder/' wurde nicht gefunden."); } - // Prüfen, ob die Dateien im Ressourcen-Ordner vorhanden sind - BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream)); - String line; - while ((line = reader.readLine()) != null) { - if (line.endsWith(".csv")) { - boardFiles.add(line); + if (resource.getProtocol().equals("file")) { + // Zugriff auf das Dateisystem (IDE-Umgebung) + File directory = new File(resource.toURI()); + for (File file : directory.listFiles()) { + if (file.isFile() && file.getName().endsWith(".csv")) { + boardFiles.add(file.getName()); + } + } + } else if (resource.getProtocol().equals("jar")) { + // Zugriff im JAR + String path = resource.getPath().substring(5, resource.getPath().indexOf("!")); // JAR-Pfad extrahieren + try (JarFile jar = new JarFile(URLDecoder.decode(path, "UTF-8"))) { + Enumeration entries = jar.entries(); + while (entries.hasMoreElements()) { + String name = entries.nextElement().getName(); + if (name.startsWith("persistent/Hitori_Spielfelder/") && name.endsWith(".csv")) { + boardFiles.add(name.substring(name.lastIndexOf("/") + 1)); + } + } } } - } catch (Exception e) { System.err.println("Fehler beim Laden der Spielfelder: " + e.getMessage()); }