loadBoardAsList Methode verändert

currentStatus
Vickvick2002 2025-01-05 11:34:20 +01:00
parent 99fe1f30c4
commit a92ddc2099
1 changed files with 25 additions and 10 deletions

View File

@ -1,8 +1,12 @@
package PR2.HitoriSpiel.GUI; package PR2.HitoriSpiel.GUI;
import java.io.*; import java.io.*;
import java.net.URLDecoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List; import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class BoardLoader { public class BoardLoader {
@ -27,21 +31,32 @@ public class BoardLoader {
public static List<String> loadBoardsAsList() { public static List<String> loadBoardsAsList() {
List<String> boardFiles = new ArrayList<>(); List<String> boardFiles = new ArrayList<>();
try { try {
// Lade alle Ressourcen in "persistent/Hitori_Spielfelder/" var resource = BoardLoader.class.getClassLoader().getResource("persistent/Hitori_Spielfelder/");
InputStream resourceStream = BoardLoader.class.getResourceAsStream("/persistent/Hitori_Spielfelder/"); if (resource == null) {
if (resourceStream == null) {
throw new IOException("Das Verzeichnis 'persistent/Hitori_Spielfelder/' wurde nicht gefunden."); throw new IOException("Das Verzeichnis 'persistent/Hitori_Spielfelder/' wurde nicht gefunden.");
} }
// Prüfen, ob die Dateien im Ressourcen-Ordner vorhanden sind if (resource.getProtocol().equals("file")) {
BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream)); // Zugriff auf das Dateisystem (IDE-Umgebung)
String line; File directory = new File(resource.toURI());
while ((line = reader.readLine()) != null) { for (File file : directory.listFiles()) {
if (line.endsWith(".csv")) { if (file.isFile() && file.getName().endsWith(".csv")) {
boardFiles.add(line); 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<JarEntry> 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) { } catch (Exception e) {
System.err.println("Fehler beim Laden der Spielfelder: " + e.getMessage()); System.err.println("Fehler beim Laden der Spielfelder: " + e.getMessage());
} }