Wie erkennt man, ob eine Eigenschaft in einer Eigenschaftendatei existiert oder nicht?

7

Wie kann man wissen, ob eine Eigenschaft in einer Eigenschaftendatei in Java existiert oder nicht?

    
user351809 27.05.2010, 09:46
quelle

8 Antworten

9

Laut% Ссылка gibt getProperty() null zurück wenn die Eigenschaft nicht gefunden wurde. Sie können auch propertyNames() oder stringPropertyNames() aufrufen und nachsehen, ob der interessierende Eigenschaftsname in der zurückgegebenen Menge enthalten ist.

    
crazyscot 27.05.2010 09:48
quelle
7

Eine weitere Alternative ist, die Tatsache Properties extends Hashtable<Object,Object> zu nutzen und containsKey zu verwenden.

    
Miserable Variable 27.05.2010 11:15
quelle
4

Laden Sie einfach die Eigenschaftendatei und versuchen Sie dann, die gewünschte Eigenschaft zu erhalten.

%Vor%
  

Sucht in dieser Eigenschaftenliste nach der Eigenschaft mit dem angegebenen Schlüssel. Wenn der Schlüssel nicht in dieser Eigenschaftsliste gefunden wird, werden die Standardeigenschaftsliste und ihre Standardwerte rekursiv überprüft. Die Methode gibt null zurück, wenn die Eigenschaft nicht gefunden wird.

miku 27.05.2010 09:50
quelle
1

Sie können auch getProperty(String key, String defaultValue) aufrufen und nach dem Standardwert suchen.

Ссылка

    
David Soroko 27.05.2010 09:52
quelle
1

Wenn Sie dies beim Start des Programms überprüfen möchten, können Sie Folgendes tun:

  1. Erstellen Sie eine Klasse VerifiedProperties , die Properties erweitert
  2. Fügen Sie alle Eigenschaften als Felder dieser Klasse als public final int/String/boolean/etc...
  3. hinzu
  4. Fügen Sie private final String propertyNotValid="Property not valid" String zu dieser Klasse hinzu
  5. Fügen Sie private final String propertyNotFound="Property not found" String zu dieser Klasse hinzu
  6. Überschreiben Sie die Methode getProperty() von der Properties-Klasse.
  7. Sie können @Deprecated -Tag hinzufügen, um die Verwendung der Felder vorzuschlagen. Diese Methode kann nicht versteckt werden, da sie in der Properties-Klasse öffentlich ist.
  8. Initialisieren Sie alle Felder im Konstruktor mit getProperty() method oder dedicated für type (siehe Beispiele unten)

Beispielmethoden, die sich um verschiedene Eigenschaftstypen kümmern:

%Vor%

Dann können Sie irgendwo erstellen:

  

öffentliche statische Eigenschaften von VerifiedProperties;

und verwenden Sie die Eigenschaften, die Sie als properties.myProperty

benötigen

Vorteile:

  • Sie haben die vollständige Kontrolle über Eigenschaften, einschließlich der Ausnahmenbehandlung und der Nullkontrolle
  • Wenn die Eigenschaft nicht existiert oder in einem falschen Format vorliegt, haben Sie die Information bei der Initialisierung des Programms
  • Sie müssen sich nicht darum kümmern, Eigenschaften in Ihrem Code in andere Typen als String zu zerlegen.
  • Sie können Ihren String -Eigenschaften
  • Validatoren hinzufügen
  • Sie können den Eigenschaftsnamen
  • leicht umgestalten
  • Wenn Sie eine externe Eigenschaftendatei verwenden, die vom Benutzer außerhalb Ihrer Anwendung geändert werden kann, wenn die angegebene Änderung nicht korrekt ist oder Felder fehlen, wird das Programm nicht gestartet.

Nachteile:

  • Für jede Eigenschaft müssen Sie neben dem Wert für *.properties file ein Feld erstellen und im Konstruktor einen Wert zuweisen. Wenn Sie viele Eigenschaften haben, kann diese Datei unangenehm aussehen.

Hinweise:

  • Es ist einfacher, die Datei zu verwalten, wenn Sie denselben Namen für das Feld behalten wie in der Eigenschaftendatei.
  • (Netbeans) Sie können Toggle Rectangular Selection hinzufügen, um public final String und ähnlich vielen Zeilen gleichzeitig hinzuzufügen.
  • (Netbeans) Um *.properties datei sauber zu halten, können Sie diese Lösung .
vo0 27.06.2014 12:46
quelle
1

Die Antwort von crazyscot ist jetzt veraltet. Laut dem neuen javadoc , die Eigenschaft wird nur erstellt, wenn sie nicht existiert,

  

"Wenn keine aktuellen Systemeigenschaften vorhanden sind, wird eine Reihe von Systemeigenschaften auf die gleiche Weise erstellt und initialisiert wie für die getProperties-Methode".

    
Samir 07.07.2015 17:38
quelle
1

Sie können hasProperty

verwenden %Vor%     
selim.aksoy 09.06.2017 09:46
quelle
-1

Hier ist ein Trick, wie man herausfinden kann, dass eine Datei (nicht obligatorische Eigenschaftendatei) im Klassenpfad existiert

%Vor%

Sicher funktioniert es nicht immer so lange es von Klassenladeaspekten abhängt

    
abovesun 27.05.2010 09:55
quelle

Tags und Links