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;
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<String> loadBoardsAsList() {
List<String> 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<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) {
System.err.println("Fehler beim Laden der Spielfelder: " + e.getMessage());
}