Slyh: FileOutputStream mit Datei innerhalb des Projekts erzeugen

Beitrag lesen

Hallo,

Annahme: "MeinProgramm" ist das Top-Level Package.

// holen der URL
URL url = getClass().getResource("/MeinProgramm/Properties/user.properties");

Soweit geht das. Im Falle einer Datei innerhalb eines JAR-Archivs
würde die URL dann z.B. so aussehen:

file:/c:/programme/java/meinprogramm.jar!/de/mein/package/MeinProgramm.class

// String Repräsentation der entsprechenden Datei
String filePath = url.getFile();

Das geht auch noch gut, weil hier keinerlei Überprüfung erfolgt.

// OutputStream erzeugen
OutputStream os = new FileOutputStream(filePath);

Hier wird er dann mit einer FileNotFoundException rausfliegen, sofern
die Datei in einem JAR liegt, weil er mit o.g. URL nichts anfangen
kann.
Wenn du diese Zeile aber noch in den untenstehende if-Block packen
würdest, würde das prinzipiell natürlich gehen. Auch wenn man im
Falle einer Datei innerhalb eines JAR-Archivs eben nichts gewonnen
hätte... :-)

if (url.getProtocol().indexOf("jar") == -1 ) {
    myProperties.store(os....);
}

Das ist aber eine sehr bastelige Abfrage! :)

Gruß
Slyh