Laden der Eigenschaften der Anwendung in eine Java-desktop-Anwendung
Was ist der beste Weg zum speichern und laden von application-level-Eigenschaften in Java.
Gibt es etwas, simulare zu .net wo würde ich gerade etwas in der app.config
<appSettings>
<add key="emailAddress" value="[email protected]" />
</appSettings>
Und dann rufen Sie es wie folgt:
string AdminEmail = ConfigurationManager.AppSettings["emailAddress"];
Muss ich zum laden von properties-Dateien in Datei-streams und so? scheint, wie unnötige Arbeit.
Ich habe dies ausprobiert:
Properties props = new Properties();
FileInputStream fis = new FileInputStream("myProps.properties");
props.load(fis);
fis.close();
Aber das ist mir eine java.io.FileNotFoundException Ausnahme. Wo kommt die Datei Eigenschaften gehen müssen, um in Bezug auf die Klasse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Preferences-API bietet diese Funktionalität. Es hat viele Warzen, aber wenn Sie schauen, um dies in einem OS-agnostisch, Mode, dies ist der einzige Weg, dies zu erreichen, mit der standard-Java-runtime-Bibliotheken. Natürlich können Sie immer schreiben Sie Ihre eigenen OS-spezifischen code, um Ihre Bedürfnisse zu erfüllen. Ja, Sie können schreiben Sie einfachen code zum laden der properties-Datei, aber der Speicherort der Datei kann zu einem problem über mehrere Betriebssysteme hinweg. Ich nehme an, seit Sie schreiben eine desktop-Anwendung in Java, die Sie interessieren, OS Portabilität. Ansonsten ist Java vielleicht nicht die beste Wahl für eine desktop-app.
Wenn du einen FileInputStream, wie dein Pfad ist relativ zum aktuellen Verzeichnis des OS, die in der Regel ist die Autostart-Verzeichnis.
Wenn Sie stattdessen die Java eingebauten Mittel-Mechanismus (wie beschrieben in der API, getResourceAsStream() et al), wird der Pfad relativ zum Speicherort Ihrer Klasse. Mit diesem Ansatz können Sie auch laden von Ressourcen in jar-Dateien und sogar über Netzwerke (für Applets zum Beispiel). Das Konzept, das verwendet wird, ist eine Art virtuelles Dateisystem, das heißt der 'classpath' im Java-jargon. Es ist ein devx Artikel über die es ein bisschen mehr im detail.
Kurz gesagt, diese Art von code, der funktioniert gut:
Müssen Sie zum hinzufügen der Fehlerbehandlung...
In der Regel wird er versuchen, die Last aus der Anwendung aktuellen Verzeichnis, die variieren kann, je nachdem, wie Sie es ausführen. Sie sollten in der Lage sein zu bestimmen, diese zur Laufzeit zu tun:
Den Pfad der Datei, es würde sein Blick in diesem Fall relativ ist, wo Sie begann Ihre java-Anwendung aus. Dies ist nicht, wo die main-Klasse oder die jar-Datei, aber wo Sie Java aus. Wenn Sie Ihre Anwendung mit einem Skript, das Aufrufe von Java, dann ist es das Verzeichnis.
Sagen Sie zum Beispiel Anwendung gebündelt in einer jar-Datei 'app.jar'. Put 'myProps.properties "in das gleiche Verzeichnis und führen Sie" java-jar app.jar " aus diesem Verzeichnis. Es sollte Ihre properties-Datei so.
Können Sie Eigenschaften mit einem ResourceBundle. Ich benutze diese in eine Anwendung das speichern von Etiketten, Schaltflächen und Meldungen in verschiedenen Sprachen
Erstellen Sie zunächst eine properties-Datei, wie test.Eigenschaften. Seine eine text-Datei und in ihm stellen Sie Ihre Informationen wie folgt:
In Ihrem Fall
und so weiter...
To get diese Eigenschaften im code, erstellen Sie eine ResourceBundle-Objekt mit dem Namen einer property-Datei zum Aufruf der Eigenschaften.
Um einen bestimmten Wert aus einer properties-Datei, rufen Sie einfach an das ResourceBundle
Diese Weise die Zeichenfolge mit dem Namen value enthält den Wert der Eigenschaft mit dem Namen "emailAddress", befindet sich im test.Eigenschaften Datei
Ebenso die Zeichenfolge mit dem Namen Wert2 enthält den Wert der Eigenschaft mit dem Namen "E-mail2", befindet sich im test.Eigenschaften Datei
Wenn Sie nicht geben Sie einen absoluten Pfad, den man gewählt wurde, ist das aktuelle.
Ist es nicht genau das, was Sie gefragt, aber wenn Sie möchten, verwenden Sie XML-Dateien wie Konfiguration, konnte man einen Blick auf Apache Commons Configuration