In der Webanwendung werden einige Werte in .properties-Datei gehalten. Wenn die Anwendung
gestartet wird, werden die Werte ausgelesen, die auch in der .properties-Datei stehen. Werden
aber zur Laufzeit Werte verändert, so ändern sich zwar die Werte in der .properties-Datei, beim
Versuch diese Werte wieder aus der Datei auszulesen, erhalte ich immer noch die alte Werte (also
die beim Starten der Anwendnug aktuell waren, und nicht die, die jetzt in der Datei sind).
Warum ist das so? Was kann man "dagegen" tun?
Hier ist die Klasse zum Speichern/Auslesen:
/*
* Created on 17.06.2004
*/
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
public class ResourceUtils {
private String uri;
/**
* @param uri Name der .property datei im Klassenpfad
* z.B. /de/beispiel/Source.properties
*/
public ResourceUtils(String uri) {
this.uri = uri;
}
public String getProperty(String key) {
String value = null;
Properties prop = new Properties();
try {
prop.load(getClass().getResourceAsStream(this.uri));
value = prop.getProperty(key);
}
catch (IOException e) {
e.printStackTrace();
}
System.out.println("=============== key="+key+", value="+value);
return value;
}
/**
* Setzt den Wert der Eigenschaft <code>key</code> auf <code>value</code>.
*
* @param key Name der Eigenschaft
* @param value Neuer Wert der Eigenschaft <code>name</code>
* @return
*/
public boolean saveProperty(String key, String value) {
Properties prop = new Properties();
try {
InputStream in = getClass().getResourceAsStream(this.uri);
prop.load(in);
prop.setProperty(key, value);
URL url = getClass().getResource(this.uri);
File file = new File(url.getFile());
BufferedOutputStream bos = new BufferedOutputStream(new
FileOutputStream(file));
prop.store(bos, "header");
return true;
}
catch (IOException e) {
e.printStackTrace();
return false;
}
}
}
gestartet wird, werden die Werte ausgelesen, die auch in der .properties-Datei stehen. Werden
aber zur Laufzeit Werte verändert, so ändern sich zwar die Werte in der .properties-Datei, beim
Versuch diese Werte wieder aus der Datei auszulesen, erhalte ich immer noch die alte Werte (also
die beim Starten der Anwendnug aktuell waren, und nicht die, die jetzt in der Datei sind).
Warum ist das so? Was kann man "dagegen" tun?
Hier ist die Klasse zum Speichern/Auslesen:
/*
* Created on 17.06.2004
*/
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
public class ResourceUtils {
private String uri;
/**
* @param uri Name der .property datei im Klassenpfad
* z.B. /de/beispiel/Source.properties
*/
public ResourceUtils(String uri) {
this.uri = uri;
}
public String getProperty(String key) {
String value = null;
Properties prop = new Properties();
try {
prop.load(getClass().getResourceAsStream(this.uri));
value = prop.getProperty(key);
}
catch (IOException e) {
e.printStackTrace();
}
System.out.println("=============== key="+key+", value="+value);
return value;
}
/**
* Setzt den Wert der Eigenschaft <code>key</code> auf <code>value</code>.
*
* @param key Name der Eigenschaft
* @param value Neuer Wert der Eigenschaft <code>name</code>
* @return
*/
public boolean saveProperty(String key, String value) {
Properties prop = new Properties();
try {
InputStream in = getClass().getResourceAsStream(this.uri);
prop.load(in);
prop.setProperty(key, value);
URL url = getClass().getResource(this.uri);
File file = new File(url.getFile());
BufferedOutputStream bos = new BufferedOutputStream(new
FileOutputStream(file));
prop.store(bos, "header");
return true;
}
catch (IOException e) {
e.printStackTrace();
return false;
}
}
}