Momentan verwende ich in meinem Java Programm unter Eclipse eine Properties Datei, um leicht benötigte Informationen einzulesen. Bei diesen Informationen kommen auch Zugangspasswörter vor, welche ich gerne verschlüsseln möchte. Dazu habe ich mir eine String-Verschlüsselungsklasse geschrieben.
Von der Idee her will ich nun einfach die entsprechenden Einträge aus den Properties auslesen und mit der setProperty Methode ändern. Ein Ausführen dieser Methode ändert in der Textdatei jedoch überhaupt momentan nichts. Ein Fehler wird auch nicht ausgegeben.
Object setProperty( String key, String value )
Trägt Schlüssel und Wert im Properties-Exemplar ein. Existiert der Schlüssel schon, wird er überschrieben. Mitunter verdeckt der Schlüssel den Wert der Property in der übergeordneten Property.
Demnach müßte das ja eigentlich funktionieren?!?
So, wie ich das sehe ich wohl die alternative Lösung meine jetztige Properties Datei einzulesen und eine komplett neue mit entsprechend veränderten Werten wieder als komplett neue Datei zu schreiben oder?
das 'Properties-Exemplar' ist das Objekt der Klasse Properties, eine Art Map,
das wird geändert, aber wieso sollte das auf irgeneine Datei auf irgendeiner Festplatte in dieser Welt eine Auswirkung haben?
Java-Objekt und Datei sind unterschiedliche Dinge,
du kannst die Properties auch in verschiedenen Dateien speichern (Speicherung in einem Computerspiel),
> So, wie ich das sehe ich wohl die alternative Lösung meine jetztige Properties Datei einzulesen und eine komplett neue mit entsprechend veränderten Werten wieder als komplett neue Datei zu schreiben oder?
genau dafür gibt es schon fortgeschrittene Operationen in Properties,
du musst sie nur aufrufen, von alleine im Hintergrund passiert nix
Okay, das werden dann wohl die Methoden load() und store() sein ...
Die Frage ist nur wie ich das dann realisieren kann, wenn die Properties Datei innerhalb der Eclipse Umgebung anders heißt als jene, wenn ich das Programm letztendlich von der Kommandozeile ausführe ...
Mir ist auch gerade aufgefallen, dass System.getProperties() scheinbar nicht die Properties aus der Datei zurückliefert ... wie komme ich denn an die Properties dran, die ich suche?
zum Zaubern wurde Java tatsächlich nicht erfunden
man braucht schon realistische Anwendungen,
wenn z.B. alle Pfade+Dateinamen zum Laden und Speichern bekannt sind ist wiederum kein Problem existent
Mir ist auch gerade aufgefallen, dass System.getProperties() scheinbar nicht die Properties aus der Datei zurückliefert ... wie komme ich denn an die Properties dran, die ich suche?
Mein Programm erstellt Statistiken aus einer nicht unerheblichen Datenmenge. Um leichter testen zu können, verwende ich deshalb in der Entwicklungsumgebung andere Pfade, die weniger Daten enthalten. Weil diese Pfade anders sind, als die finalen Pfade, verwende ich eine zweite Properties Datei.
Habe es gerade hinbekommen die Propertiesdatei neu zu schreiben. Dabei ist mir aufgefallen, dass die Einträge in der Datei die Reihenfolge geändert haben. Das hat wahrscheinlich damit zu tun, dass Properties intern auf einer normalen Hashtable und nicht auf einer TreeMap basieren oder? Kann man irgendetwas machen, um die Reihenfolge beizubehalten?
Außerdem ist mir aufgefallen, dass die Kommentare nun fehlen. Ist ja eigentlich auch klar: sie gehören schließlich nicht zur Hashtable dazu. Ideen, wie ich diese Informationen trotzdem erhalten könnte?
Prinzipiell hast du da natürlich recht. Meine Klasse, in der ich mit den Daten aus der Properties Datei hantiere, wird halt dadurch etwas leichter, weil ich keine Fallunterscheidungen machen muss ...
Komentare sind in der Hinsicht notwendig, weil der Benutzer unter anderen vor Programmstart in diese Datei seine Logindaten reinschreiben muss
Die einzige Lösung, die mir einfällt, ist dann glaube ich die Strings mit einem seperaten Programmaufruf zu codieren und den Benutzer anschließend zu bitte, diese Werte entsprechend in der Properties Datei einzutragen ...
Prinzipiell hast du da natürlich recht. Meine Klasse, in der ich mit den Daten aus der Properties Datei hantiere, wird halt dadurch etwas leichter, weil ich keine Fallunterscheidungen machen muss ...
ja vor Programmstart, ergo reicht es wenn in der Properties Datei du die Kommentare hast - zur laufzeit ist es unwichtig wie die kommentare in der Datei sind... daher braucht man sie nicht einzulesen !