Die Dateiendung .properties wird hauptsächlich in Java -Technologien verwendet , um die konfigurierbaren Parameter einer Anwendung zu speichern. Sie kann auch zum Speichern von Zeichenketten für Internationalisierung und Lokalisierung genutzt werden ; diese werden als Property Resource Bundles (PRBs) bezeichnet .

Jeder Parameter wird als Paar von Zeichenketten gespeichert , wobei die eine den Namen des Parameters (den sogenannten Schlüssel ) speichert und die andere den Wert speichert.

Im Gegensatz zu vielen gängigen Dateiformaten gibt es für .properties-Dateien keinen RFC , und die Spezifikationsdokumente sind nicht immer eindeutig, was höchstwahrscheinlich auf die Einfachheit des Formats zurückzuführen ist.

Format

Jede Zeile einer .properties-Datei speichert normalerweise eine einzelne Eigenschaft. Für jede Zeile sind verschiedene Formate möglich, darunter key=value, key = value, key:valueund key value. Einfache und doppelte Anführungszeichen werden als Teil der Zeichenkette betrachtet. Nachfolgende Leerzeichen sind relevant und werden in der Regel gemäß den Anforderungen des Nutzers entfernt.

Kommentarzeilen in .properties-Dateien werden durch das Nummernzeichen (#) oder das Ausrufezeichen (!) als erstes nicht leeres Zeichen gekennzeichnet . Der restliche Text in dieser Zeile wird ignoriert. Ein Backslash dient zur Maskierung eines Zeichens. Ein Beispiel für eine Properties-Datei finden Sie unten.

# Sie lesen einen Kommentar in der Datei ".properties".Das Ausrufezeichen ('!') kann auch für Kommentare verwendet werden.# Kommentare werden ignoriert.# Leere Zeilen werden ebenfalls ignoriert.# Zeilen mit "properties" enthalten einen Schlüssel und einen Wert, die durch ein Trennzeichen getrennt sind.# Es gibt 3 Trennzeichen: Gleichheitszeichen ('='), Doppelpunkt (':') und Leerzeichen (' ', '\t' und '\f').Webseite = https://en.wikipedia.org/Sprache : EnglischThemen- .properties-Dateien# Ein einzelnes Wort in einer Zeile erzeugt lediglich einen Schlüssel ohne Wert.leer# Leerzeichen zwischen Schlüssel, Trennzeichen und Wert werden ignoriert.# Dies bedeutet, dass die folgenden Ausdrücke (abgesehen von der Lesbarkeit) gleichwertig sind.Hallo = HalloHallo = Hallo# Um den Wert mit einem Leerzeichen zu beginnen, maskieren Sie ihn mit einem Backslash ('\').whitespaceStart = \ <-Dieses Leerzeichen wird nicht ignoriert.# Schlüssel mit dem gleichen Namen werden durch den Schlüssel überschrieben, der am weitesten in einer Datei steht.# Der endgültige Wert für "duplicateKey" ist beispielsweise "second".duplicateKey = firstduplicateKey = second# Um die Trennzeichen innerhalb eines Schlüssels zu verwenden, müssen Sie sie mit einem ('\') maskieren.# Dies muss jedoch nicht im Wert berücksichtigt werden.delimiterCharacters \:\=\ = Dies ist der Wert für den Schlüssel "delimiterCharacters \:\=\ "# Das Hinzufügen eines Backslashs ('\') am Ende einer Zeile bedeutet, dass der Wert in der nächsten Zeile fortgesetzt wird.multiline = Diese Zeile \Fortsetzung# Wenn Ihr Wert einen Backslash ('\') enthalten soll, muss dieser mit einem weiteren Backslash ('\') maskiert werden.Pfad = c: \\ wiki \\ templatesDas bedeutet, dass, wenn die Anzahl der Backslashes ('\') am Ende der Zeile gerade ist, die nächste Zeile nicht in den Wert einbezogen wird.# Im folgenden Beispiel ist der Wert für "evenKey" "This is on one line\".evenKey = Dies steht in einer Zeile \\# Diese Zeile ist ein normaler Kommentar und wird nicht in den Wert für "evenKey" einbezogen.# Wenn die Anzahl der Backslashes ('\') ungerade ist, wird die nächste Zeile in den Wert einbezogen.# Im folgenden Beispiel ist der Wert für "oddKey" "Dies ist Zeile eins und\# Dies ist Zeile zwei".oddKey = Dies ist Zeile eins und \\\# Dies ist Zeile zwei# Leerzeichen am Anfang einer Zeile werden entfernt.# Achten Sie darauf, die benötigten Leerzeichen vor dem Backslash ('\') in der ersten Zeile einzufügen.# Wenn Sie sie am Anfang der nächsten Zeile hinzufügen, werden sie entfernt.Im folgenden Beispiel ist der Wert für "welcome" "Willkommen bei Wikipedia!".Willkommen = Willkommen bei \Wikipedia!# Falls Sie Zeilenumbrüche und Wagenrückläufe hinzufügen müssen, müssen diese mit ('\n') bzw. ('\r') maskiert werden.# Zur besseren Lesbarkeit können Sie Tabulatoren optional mit ('\t') maskieren.valueWithEscapes = Dies ist ein Zeilenumbruch \n und ein Wagenrücklauf \r und ein Tabulator \t .# Sie können auch Unicode-Escape-Zeichen verwenden (maximal vier Hexadezimalziffern).# Im folgenden Beispiel ist der Wert für „encodedHelloInJapanese“ „こんにちは“.encodedHelloInJapanese = \u 3053 \u 3093 \u 306b \u 3061 \u 306f# Bei moderneren Dateikodierungen wie UTF-8 können Sie jedoch direkt unterstützte Zeichen verwenden.helloInJapanese =こんにちは

Im obigen Beispiel:

  • Das Nummernzeichen (#) und das Ausrufezeichen (!) am Anfang einer Zeile ( Zeile 1 , 2 usw.) kennzeichnen Text als Kommentar; Kommentare werden ignoriert.
  • Eine leere Zeile ( Zeile 5 ) wird ebenfalls ignoriert.
  • " website " ( Zeile 8 ) wäre ein Schlüssel, und der entsprechende Wert wäre " https://en.wikipedia.org/ ".
  • Alle Leerzeichen am Anfang von Zeile 44 wurden entfernt. Das bedeutet, dass der Schlüssel „ welcome “ ( Zeile 43 ) den Wert „ Welcome to Wikipedia! “ und nicht „ Welcome to Wikipedia !“ hat.          

Vor Java 9 war die Kodierung von .properties-Dateien ISO-8859-1 (auch bekannt als Latin-1). Alle Nicht-ASCII-Zeichen mussten mit Unicode- Escapezeichen eingegeben werden, z. B. \uHHHH, wobei HHHH der hexadezimale Index des Zeichens im Unicode-Zeichensatz ist. Dadurch konnten .properties-Dateien als Ressourcenpakete für die Lokalisierung verwendet werden . Eine Nicht-Latin-1-Textdatei konnte mithilfe des im JDK enthaltenen Tools native2ascii oder eines Tools wie po2prop [ 1 ] , das die Transformation von einem zweisprachigen Lokalisierungsformat in die .properties-Codierung übernimmt, in eine korrekte .properties-Datei konvertiert werden.

Eine Alternative zur Verwendung von Unicode-Escape-Zeichen für Nicht-Latin-1-Zeichen in ISO 8859-1-kodierten Java *.properties-Dateien ist die Verwendung des XML Properties-Dateiformats des JDK, das standardmäßig UTF-8- kodiert ist und ab Java 1.5 eingeführt wurde. [ 2 ]

Eine weitere Alternative ist die Erstellung eines benutzerdefinierten Steuerelements, das eine benutzerdefinierte Kodierung ermöglicht. [ 3 ]

In Java 9 und neueren Versionen ist die Standardkodierung speziell für Property Resource Bundles UTF-8. Wird eine ungültige UTF-8-Bytefolge gefunden, wird auf ISO-8859-1 zurückgegriffen. [ 4 ] [ 5 ]

Bearbeitung

Das Bearbeiten von .properties-Dateien erfolgt mit einem beliebigen Texteditor , wie beispielsweise den auf verschiedenen Betriebssystemen üblicherweise installierten Programmen , darunter Notepad unter Windows oder Emacs , Vim usw. unter Linux-Systemen.

Es sind auch Drittanbieter-Tools mit zusätzlichen Funktionen speziell für die Bearbeitung von .properties-Dateien verfügbar, wie zum Beispiel:

Nicht-Java-Anwendungsfälle und Ausnahmen

Apache Flex verwendet ebenfalls .properties-Dateien, diese sind jedoch UTF-8-kodiert. [ 6 ]

Im Format der uriworkermap.properties von Apache mod_jk kennzeichnet ein Ausrufezeichen ("!") einen Negationsoperator , wenn es als erstes nicht leeres Zeichen in einer Zeile verwendet wird. [ 7 ]

Perl CPAN enthält Config::Properties zur Anbindung an eine .properties-Datei. [ 8 ]

SAP verwendet .properties-Dateien zur Lokalisierung innerhalb seines Frameworks SAPUI5 und seiner Open-Source-Variante OpenUI5 [ 9 ].

Es gibt viele Node.js (JavaScript/TypeScript) Optionen, die über den Paketmanager Npm verfügbar sind. [ 10 ]

Für PHP stehen außerdem zahlreiche Paketoptionen zur Verfügung. [ 11 ]

Siehe auch

  • XML , JSON und YAML werden von einigen für komplexere Konfigurationsformate verwendet.

Referenzen

  1. ^ Das Toolkit „Translate Toolkit “ konvertiert mit „po2prop“ native Zeichenkodierungen in einer Gettext -PO-Datei in korrekt maskiertes ASCII, ohne dass native2ascii benötigt wird.
  2. ^ Java XML Properties DTD
  3. ^ „Java – Verwendung von UTF-8 in Ressourceneigenschaften mit ResourceBundle“ . Stack Overflow . Archiviert vom Original am 17.03.2015 . Abgerufen am 28.01.2015 .
  4. ^ „Internationalisierungsverbesserungen in JDK 9“ . Oracle Help Center . Abgerufen am 05.01.2018 .
  5. ^ „JEP 226: UTF-8 Property Resource Bundles“ . OpenJDK . Abgerufen am 3. September 2020 .
  6. ^ "IResourceBundle" . Adobe ActionScript 3 (AS3 Flex) API-Referenz .
  7. ^ "uriworkermap.properties-Konfiguration" . Der Apache Tomcat Connectors - Referenzleitfaden .
  8. ^ "Config::Properties - Lesen und Schreiben von Eigenschaftsdateien" . metacpan.org .
  9. ^ „SAPUI5 SDK - Demo Kit“ . sapui5.hana.ondemand.com . Abgerufen am 14.05.2019 .
  10. ^ "keywords:properties java parse - npm search" . www.npmjs.com . Abgerufen am 22.03.2022 .
  11. ^ „Packagist“ . packagist.org . Abgerufen am 22.03.2022 .