Datei einlesen funktioniert nicht

F

FranzFerdinand

Gast
Hallöle,

ich beschäftige mich mit dem Einlesen und Speichern von Textdateien in Form von Properties.
Ich habe die angegebene Ordnerstruktur in Eclipse:
Bildschirmfoto 2015-05-13 um 18.16.25.png

Im resources Ordner "dateien" liegt meine Textdatei namens "spielstand.txt".

Diese möchte ich gerne einlesen und in ihr Dinge abspeichern:

Hierzu habe ich mir die EinleseMethode gebastelt:
Java:
private Properties ladeProperties(String filename) {
		Properties prop = new Properties();
		InputStream inputStream = getClass().getClassLoader().getResourceAsStream("./dateien/"+filename);
		try {
			prop.load(inputStream);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return prop;
	 }

Ich lese das dann in einer anderen Methode ein mit:
Java:
Properties spielstand = ladeProperties("spielstand.txt");

Ich bekomme jedoch stetig eine NullPointerException in genau dieser Zeile heraus, die Datei spielstand.txt würde nicht existieren.
Gleichzeitig legt Eclipse auf einmal eine gleichnamige Datei im Root Verzeichnis neu an.

Kann mir jemand verraten, was ich falsch mache beim Aufruf der Datei?

Ich habe schon sehr viel Umherexperimentiert und kurzfristig eine funktionierende Lösung gehabt, die aber dann beim Exportieren in eine JAR wieder nicht ging, also nur in Eclipse.

Es wäre sehr schön, wenn mir jemand sagen könnte, wie ich erreiche, dass das einlesen und speichern in Eclipse und von einer jar aus (die Textdatei ist innen drin in dieser) funktioniert.

Schöne Grüße und Danke
Lukas :)
 

Major_Sauce

Bekanntes Mitglied
Schon mal "dateien/spielstand.txt" versucht ?
Würde ne datei außerdem über nen File reader einlesen, is wesentlich einfacher...

mfg Major
 
F

FranzFerdinand

Gast
Hallöle, und danke für Deine Antwort,

damit hat es leider auch nicht funktioniert.

Aber jetzt klappt es irgendwie halbwegs auf anderem Wege.

Ich zeige mal die gesamte Javaklasse:
Java:
package cafeint;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.net.URL;
import java.util.Properties;

import javax.swing.JOptionPane;

public class Spielstand {
	
	private String dateiname = "spielstand.txt";
	
	public void speichern() {
		Properties spielstand = ladeProperties(dateiname);
		spielstand.setProperty("spielangefangen",String.valueOf(true));
		spielstand.setProperty("amZug",String.valueOf(Variablen.getAktSpieler()));
		spielstand.setProperty("zustand",String.valueOf(Variablen.getZustand()));
		
		for(int i=0;i<2;i++) {
			spielstand.setProperty("spielername"+i,Variablen.getSpieler(i).getName());
			spielstand.setProperty("spielerpunkte"+i,String.valueOf(Variablen.getSpieler(i).getPunkte()));
			for(int h=0;h<5;h++) {
				spielstand.setProperty("handkarte"+i+"-"+h,String.valueOf(Variablen.getSpieler(i).getHandkarten().get(h)));
			}
		}
		spielstand.setProperty("anzahlGastkarten",String.valueOf(Variablen.getGastkarten().size()));
		spielstand.setProperty("anzahlLaenderkarten",String.valueOf(Variablen.getLaenderkarten().size()));
		spielstand.setProperty("anzahlBarkarten",String.valueOf(Variablen.getBarkarten().size()));
		for(int i=0;i<Variablen.getGastkarten().size();i++) {
			spielstand.setProperty("gastkarte"+i,String.valueOf(Variablen.getGastkarten().get(i)));
		}
		for(int i=0;i<Variablen.getLaenderkarten().size();i++) {
			spielstand.setProperty("laenderkarte"+i,String.valueOf(Variablen.getLaenderkarten().get(i)));
		}
		for(int i=0;i<Variablen.getBarkarten().size();i++) {
			spielstand.setProperty("barkarte"+i,String.valueOf(Variablen.getBarkarten().get(i)));
		}
		for(int i=0;i<Variablen.getStuehle().size();i++) {
			spielstand.setProperty("stuhl"+i,String.valueOf(Variablen.getStuehle().get(i).getGast()));
		}
		for(int i=0;i<Variablen.getTische().size();i++) {
			spielstand.setProperty("tisch"+i,String.valueOf(Variablen.getTische().get(i).getLaenderkarte()));
		}
		
		try {
			spielstand.store(new FileWriter("dateien/"+dateiname),"Spielstand gespeichert");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void laden() {
		Properties spielstand = ladeProperties(dateiname);
		boolean spielgespeichert = Boolean.valueOf(spielstand.getProperty("spielangefangen","false"));
		if(spielgespeichert) {
			Meldungen msgbox = new Meldungen();
			int menue = JOptionPane.showOptionDialog(null,msgbox.altesspielfrage,msgbox.altesspieltitel, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, msgbox.altesspieloptionen, msgbox.altesspieloptionen[0]);
            if(menue == 0) {
            	Variablen.setAktSpieler(Integer.valueOf(spielstand.getProperty("amZug")));
    			Variablen.setZustand(Integer.valueOf(spielstand.getProperty("zustand")));
    			for(int i=0;i<2;i++) {
    				Variablen.getSpieler(i).setName(spielstand.getProperty("spielername"+i));
    				Variablen.getSpieler(i).setPunkte(Integer.valueOf(spielstand.getProperty("spielerpunkte"+i)));
    				for(int h=0;h<5;h++) {
    					Variablen.getSpieler(i).getHandkarten().add(Gastkarte.parseGastkarte(spielstand.getProperty("handkarte"+i+"-"+h)));
    				}
    			}
    			Programmstart progst = new Programmstart();
    			progst.grafikladen();
    			Statistikecke.getInfz(0).punktzahlschreiben();
    			Statistikecke.getInfz(1).punktzahlschreiben();
    			Statistikecke.getInfz(Variablen.getAktSpieler()).faerben(true);
    			int anzahlGastkarten = Integer.valueOf(spielstand.getProperty("anzahlGastkarten"));
    			int anzahlLaenderkarten = Integer.valueOf(spielstand.getProperty("anzahlLaenderkarten"));
    			int anzahlBarkarten = Integer.valueOf(spielstand.getProperty("anzahlBarkarten"));
    			for(int i=0;i<anzahlGastkarten;i++) {
    				Variablen.getGastkarten().add(Gastkarte.parseGastkarte(spielstand.getProperty("gastkarte"+i)));
    			}
    			for(int i=0;i<anzahlLaenderkarten;i++) {
    				Variablen.getLaenderkarten().add(Laenderkarte.parseLaenderkarte(spielstand.getProperty("laenderkarte"+i)));
    			}
    			for(int i=0;i<anzahlBarkarten;i++) {
    				Variablen.getBarkarten().add(Gastkarte.parseGastkarte(spielstand.getProperty("barkarte"+i)));
    				Barkartenecke.getBarzelle(i).setGast(Variablen.getBarkarten().get(i));
    			}
    			for(int i=0;i<Variablen.getStuehle().size();i++) {
    				Variablen.getStuehle().get(i).setStartGast(Gastkarte.parseGastkarte(spielstand.getProperty("stuhl"+i)));
    			}
    			for(int i=0;i<Variablen.getTische().size();i++) {
    				Variablen.getTische().get(i).setLand(Laenderkarte.parseLaenderkarte(spielstand.getProperty("tisch"+i)));
    			}
            } else {
            	neuesspiel();
            }
		} else {
			neuesspiel();
		}
	}
	
	private void neuesspiel() {
		Programmstart progst = new Programmstart();
		Spielstart spstart = new Spielstart();
		progst.namensfrage();
        progst.grafikladen();
        spstart.neuesspiel();
	}
	
	public void loescheSpielstand() {
		Properties spielstand = ladeProperties(dateiname);
		spielstand.clear();
		spielstand.setProperty("spielangefangen",String.valueOf(false));
		
		try {
			spielstand.store(new FileWriter("dateien/"+dateiname),"Spielstand gespeichert");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	private Properties ladeProperties(String filename) {
		Properties prop = new Properties();
		InputStream inputStream = getClass().getClassLoader().getResourceAsStream(filename);
		try {
			prop.load(inputStream);
			inputStream.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return prop;
	 }

}

Die ganzen Elemente drum herum sind nicht so wichtig, da lade und speichere ich einzelne Variablen aus anderen Klassen. Insofern er die Datei selbst hinkriegt zu speichern, dann geht das auch. ;)
Also ich rufe die Properties stets in der Methode ladeProperties auf und in den anderen Methoden speichere ich dran herum.

In Eclipse allein klappt das nun sehr gut.
Auch wenn ich es als Jar Exportiere, lädt er die Spieldaten aus der txt heraus. Die txt liegt aber in der Jar drin.
Er speichert aber keine Spielstände drin ab.
Kann er das überhaupt von txt Dateien innerhalb von Jar Dateien?
Wenn Nein: Wie kan ich da anders lösen?

Kann mir einer anhand meines Quelltextes erklären, was da nicht funktioniert?

Vielen Dank!
Gruß
Lukas :)
 

knilch

Bekanntes Mitglied
Hi,
Kann er das überhaupt von txt Dateien innerhalb von Jar Dateien?
Bist du sicher, dass die Datei: spielstand.txt ins jar gepackt wird?
(das kannst du sehen wenn du das jar mit 7zip öffnest)

Wenn spielstand.txt im jar ist, dann geht das nicht. Denn das jar müsste bei jeder Änderung in spielstand.txt entpackt und dann neu erstellt werden, und das während der Zeit, in der das jar selbst ausgeführt wird.
Ist die Datei Schreibgeschützt?

Wie hast du den Export als jar gemacht?

Wenn Nein: Wie kan ich da anders lösen?
Hast du folgendes schon geprüft:
Wenn du das jar erstellst, und exportierst, dann muss du noch einen Ordner dateien mit der Datei spielstand.txt im selben Verzeichnis haben, wo das jar ist.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
J Java 8 Datei einlesen Allgemeine Java-Themen 1
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K JAVA Datei einlesen Allgemeine Java-Themen 2
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
Q Text Datei einlesen Allgemeine Java-Themen 27
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5
J Große Datei einlesen und gestückelt verarbeiten Allgemeine Java-Themen 4
Y Property Datei einlesen Allgemeine Java-Themen 2
FoolMoon Datei zeilenweise einlesen, aber nicht die erste Zeile! Allgemeine Java-Themen 3
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
G Datei einlesen: Umlaute sind Fragezeichen Allgemeine Java-Themen 23
G HTML-Datei einlesen, Plain Text in Textfile speichern Allgemeine Java-Themen 4
Y Excel datei einlesen und inhalt verarbeiten Allgemeine Java-Themen 8
H Mit Log4j erzeugte Datei einlesen Allgemeine Java-Themen 2
data89 Datei aus ausführbarer Jar einlesen Allgemeine Java-Themen 2
Noar Datei einlesen, bearbeiten, ausgeben Allgemeine Java-Themen 5
H Datei (zeilenweise) einlesen Allgemeine Java-Themen 3
D Datei im DOS/ASCII-Format einlesen. Allgemeine Java-Themen 9
D binäre Datei einlesen und schreiben? Allgemeine Java-Themen 3
J Text einer .csv Datei einlesen und Zeile in NEUE Zeile hänge Allgemeine Java-Themen 1
H2SO3- csv Datei mit unterschiedlichen Formatierungen einlesen Allgemeine Java-Themen 15
F Double mit Streams aus Datei einlesen Allgemeine Java-Themen 3
A Ini Datei einlesen Allgemeine Java-Themen 5
MQue Datei einlesen Allgemeine Java-Themen 10
K Datei als HEX oder dezimal gem. ASCII einlesen Allgemeine Java-Themen 4
MQue Datei einlesen/auslesen Allgemeine Java-Themen 4
T (Binary)Datei einlesen, Inhalt ändern, Datei schreiben Allgemeine Java-Themen 4
G Datei einlesen und in HashMap verarbeiten Allgemeine Java-Themen 3
G Einlesen von Parameterwerten aus einer txt-Datei Allgemeine Java-Themen 2
pikay TXT-Datei in 2-Dimensionales Array Einlesen Allgemeine Java-Themen 8
J XML-Datei byteweise einlesen und Kodierung auslesen Allgemeine Java-Themen 4
spacegaier Performanceproblem beim Einlesen aus Datei mittels Threads Allgemeine Java-Themen 23
P IOException beim einlesen einer XML- Datei Allgemeine Java-Themen 8
M bei Klick auf Button Datei einlesen Allgemeine Java-Themen 3
S große Datei einlesen! Allgemeine Java-Themen 7
P XML- Datei einlesen Allgemeine Java-Themen 11
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
E Datei rückwärts einlesen Allgemeine Java-Themen 5
B Problem bei Datei einlesen (Applet) Allgemeine Java-Themen 4
G 180 MB CSV-datei einlesen. Problem! Allgemeine Java-Themen 14
L Frage zu java.util.regex und Einlesen einer Datei Allgemeine Java-Themen 2
D CSV Datei einlesen Allgemeine Java-Themen 17
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
R Datei einlesen, Strings hinzufügen, abspeichern Allgemeine Java-Themen 4
K .ini Datei einlesen? Allgemeine Java-Themen 6
G outOfMemoryError beim Einlesen einer Datei abfangen? Allgemeine Java-Themen 13
flashfactor Komischer Fehler beim Einlesen einer Datei. Allgemeine Java-Themen 2
K .wav Datei einlesen Allgemeine Java-Themen 2
T Tastatureingabe in Datei einlesen Allgemeine Java-Themen 5
S Datei endlos einlesen (am Dateiende warten) Allgemeine Java-Themen 3
P Probleme beim Einlesen einer TXT/CSV-Datei aus einem JAR Allgemeine Java-Themen 7
M Datei in String einlesen Allgemeine Java-Themen 3
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
C Datei vollständig einlesen Allgemeine Java-Themen 3
D Bilder einlesen, bearbeiten und wieder in Datei schreiben Allgemeine Java-Themen 3
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben