Der Parameter von
SpawnLevel beginnt mit einem Slash. Das heißt eigentlich, dass die Laufzeitumgebung den Pfad nicht relativ, sondern absolut sucht, wenn du das an den FileReader so übergibst. Bei class.getResource wird nur der Pfad relativ zum Paket der Klasse oder bei führendem Slash absolut im Projekt (!) gesucht (siehe
hier), weshalb das problemlos funktioniert. Ein führendes Slash bei Pfäden heißt im Prinzip Wurzelverzeichnis, sodass der FileReader nach
\testmap.txt sucht und nicht nach
C:\PfadZumProjekt\res\testmap.txt, was es natürlich nicht gibt. Also entweder gibst du den absoluten Pfad an (sinnfrei, weil es sonst immer nur im gleichen Verzeichnis funktioniert), oder den relativen Pfad
Dann wäre die Angabe: "/../res".
Du navigierst also einen Ordner zurück, und dann in den "res"- Ordner.
oder du nutzt auch hier getResource bzw getResourceAsStream etwa so:
|
Quellcode
|
1
|
BufferedReader level = new BufferedReader(new InputStreamReader(Level.class.getResourceAsStream(path)));
|
Wenn mich nicht alles täuscht, sollte das funktionieren. Ein führendes Slash heißt wie gesagt immer Wurzelverzeichnis (Root). Wenn du relative Pfadangaben verwenden möchtest, aber nicht einfach nur die Datei angeben möchtest, kannst du auch
./file schreiben.