Hi,
ich habe folgendes Problem:
Also ich habe ein paar Methoden geschrieben zum einlesen und schreiben einer Propeties Datei, nun möchte ich aber, dass wenn z.B. ein boolean Wert im Programm auf false gesetzt wird dies in der Propeties-Datei gespeichert wird, bisher hat es bei mir aber nicht so geklappt wie geplant:
Hier der Code der diese Methode aufruft um Änderungen zu speichern:
Hier noch mal eben der Code zu properties:
Um genau zu sein, das Problem besteht darin, dass nur die letze Zeile gespeichert wird und bei meinen anderen Versuchen wurde immer nur die ganze Datei kopiert und wieder eingefügt und dann die Änderung darunter eingefügt, anstatt einfach den Wert der bereits vorhandenen property auszutauschen.
Ich hoffe ihr könnt mir helfen! Genutzt wird übrigens Java 8 und ich möchte eigentlich sämtlichen Code vermeiden der sich durch Java 8 anders lösen lässt!
Sollte es euch wundern, woher die Klasse SilenceException kommt, dies ist einfach ein Bestandteil einer Engine die ich verwende und sorgt einfach nur dafür, dass die Exception in einen log geschrieben wird, sollte eine Exception enstehen.
JavaGamer
ich habe folgendes Problem:
Also ich habe ein paar Methoden geschrieben zum einlesen und schreiben einer Propeties Datei, nun möchte ich aber, dass wenn z.B. ein boolean Wert im Programm auf false gesetzt wird dies in der Propeties-Datei gespeichert wird, bisher hat es bei mir aber nicht so geklappt wie geplant:
Java:
public static void setProperty(String key, String value, File file) {
try (OutputStream output = new FileOutputStream(file)) {
Properties prop = read(file);
prop.put(key, value);
prop.store(output, "v1.1.0");
} catch (IOException e) {
SilenceException.reThrow(e);
}
}
public static Properties read(File file) {
Properties prop = new Properties();
try (InputStream input = new FileInputStream(file)) {
// load a properties file
prop.load(input);
return prop;
} catch (IOException e) {
SilenceException.reThrow(e);
}
return null;
}
Hier der Code der diese Methode aufruft um Änderungen zu speichern:
Java:
private static void writeOptions() {
PropertyUtil.setProperty("animations", "" + OptionsState.animations, properties);
PropertyUtil.setProperty("logo", "" + OptionsState.logos, properties);
PropertyUtil.setProperty("fullscreen", "" + OptionsState.fullscreens, properties);
PropertyUtil.setProperty("music", "" + OptionsState.music, properties);
PropertyUtil.setProperty("explosion", "" + OptionsState.explosion, properties);
PropertyUtil.setProperty("shot", "" + OptionsState.shot, properties);
PropertyUtil.setProperty("button", "" + OptionsState.button, properties);
PropertyUtil.setProperty("highscore", "" + OptionsState.HIGHSCORE, properties);
PropertyUtil.setProperty("live", "" + OptionsState.LIVE, properties);
PropertyUtil.setProperty("speed", "" + OptionsState.SPEED, properties);
PropertyUtil.setProperty("build", "" + Dejustice.build, properties);
}
Hier noch mal eben der Code zu properties:
Java:
private static File properties;
[...]
public static void init() {
properties = new File("options.properties");
Um genau zu sein, das Problem besteht darin, dass nur die letze Zeile gespeichert wird und bei meinen anderen Versuchen wurde immer nur die ganze Datei kopiert und wieder eingefügt und dann die Änderung darunter eingefügt, anstatt einfach den Wert der bereits vorhandenen property auszutauschen.
Ich hoffe ihr könnt mir helfen! Genutzt wird übrigens Java 8 und ich möchte eigentlich sämtlichen Code vermeiden der sich durch Java 8 anders lösen lässt!
Sollte es euch wundern, woher die Klasse SilenceException kommt, dies ist einfach ein Bestandteil einer Engine die ich verwende und sorgt einfach nur dafür, dass die Exception in einen log geschrieben wird, sollte eine Exception enstehen.
JavaGamer