| .properties | |
|---|---|
| Filename extension | .properties |
| Internet media type | text/plain |
.properties is afile extension forfiles mainly used inJava-related technologies to store the configurable parameters of anapplication. They can also be used for storing strings forInternationalization and localization; these are known as Property Resource Bundles.
Each parameter is stored as a pair ofstrings, one storing the name of the parameter (called thekey), and the other storing the value.
Unlike many popular file formats, there is noRFC for .properties files and specification documents are not always clear, most likely due to the simplicity of the format.
Each line in a .properties file normally stores a single property. Several formats are possible for each line, includingkey=value,key = value,key:value, andkey value. Single-quotes or double-quotes are considered part of the string. Trailing space is significant and presumed to be trimmed as required by the consumer.
Comment lines in .properties files are denoted by thenumber sign (#) or theexclamation mark (!) as the first nonblankcharacter, in which all remaining text on that line is ignored. The backwards slash is used to escape a character. An example of a properties file is provided below.
# You are reading a comment in ".properties" file.! The exclamation mark ('!') can also be used for comments.# Comments are ignored.# Blank lines are also ignored.# Lines with "properties" contain a key and a value separated by a delimiting character.# There are 3 delimiting characters: equal ('='), colon (':') and whitespace (' ', '\t' and '\f').website=https://en.wikipedia.org/language:Englishtopic.properties files# A word on a line will just create a key with no value.empty# Whitespace that appears between the key, the delimiter and the value is ignored.# This means that the following are equivalent (other than for readability).hello=hellohello=hello# To start the value with whitespace, escape it with a backslash ('\').whitespaceStart=\<-This space is not ignored.# Keys with the same name will be overwritten by the key that is the furthest in a file.# For example the final value for "duplicateKey" will be "second".duplicateKey=firstduplicateKey=second# To use the delimiter characters inside a key, you need to escape them with a ('\').# However, there is no need to do this in the value.delimiterCharacters\:\=\=This is the value for the key "delimiterCharacters\:\=\"# Adding a backslash ('\') at the end of a line means that the value continues on the next line.multiline=This line\continues# If you want your value to include a backslash ('\'), it should be escaped by another backslash ('\').path=c:\\wiki\\templates# This means that if the number of backslashes ('\') at the end of the line is even, the next line is not included in the value.# In the following example, the value for "evenKey" is "This is on one line\".evenKey=This is on one line\\# This line is a normal comment and is not included in the value for "evenKey".# If the number of backslash ('\') is odd, then the next line is included in the value.# In the following example, the value for "oddKey" is "This is line one and\# This is line two".oddKey=This is line one and\\\# This is line two# Whitespace characters at the beginning of a line is removed.# Make sure to add the spaces you need before the backslash ('\') on the first line.# If you add them at the beginning of the next line, they will be removed.# In the following example, the value for "welcome" is "Welcome to Wikipedia!".welcome=Welcome to\Wikipedia!# If you need to add newlines and carriage returns, they need to be escaped using ('\n') and ('\r') respectively.# You can also optionally escape tabs with ('\t') for readability purposes.valueWithEscapes=This is a newline\n and a carriage return\r and a tab\t.# You can also use Unicode escape characters (maximum of four hexadecimal digits).# In the following example, the value for "encodedHelloInJapanese" is "こんにちは".encodedHelloInJapanese=\u3053\u3093\u306b\u3061\u306f# But with more modern file encodings like UTF-8, you can directly use supported characters.helloInJapanese=こんにちは
In the example above:
Before Java 9, the encoding of a .properties file isISO-8859-1, also known as Latin-1. All non-ASCII characters must be entered by usingUnicode escape characters, e.g. \uHHHH where HHHH is a hexadecimal index of the character in the Unicode character set. This allows for using .properties files asresource bundles forlocalization. A non-Latin-1 text file can be converted to a correct .properties file by using thenative2ascii tool that is shipped with theJDK or by using a tool, such as po2prop,[1] that manages the transformation from a bilingual localization format into .properties escaping.
An alternative to using unicode escape characters for non-Latin-1 character in ISO 8859-1 character encoded Java *.properties files is to use the JDK's XML Properties file format which by default isUTF-8 encoded, introduced starting with Java 1.5.[2]
Another alternative is to create custom control that provides custom encoding.[3]
In Java 9 and newer, the default encoding specifically for property resource bundles is UTF-8, and if an invalid UTF-8 byte sequence is encountered it falls back to ISO-8859-1.[4][5]
Editing .properties files is done using anytext editor such as those typically installed on variousOperating Systems includingNotepad on Windows orEmacs,Vim, etc. on Linux systems.
Third-party tools are also available with additional functionality specific to editing .properties files such as:
Apache Flex uses .properties files as well, but here they are UTF-8 encoded.[6]
InApache mod_jk's uriworkermap.properties format, an exclamation mark ("!") denotes aNegation operator when used as the first nonblank character in a line.[7]
PerlCPAN contains Config::Properties to interface to a .properties file.[8]
SAP uses .properties files for localization within their framework SAPUI5 and its open-source variantOpenUI5[9]
There are manyNode.js (JavaScript/TypeScript) options available onNpm's package manager.[10]
PHP also has many package options available.[11]
java.util.Properties.load(java.io.Reader) - gives the precise semantics of well-formed Java property filesjava.util.PropertyResourceBundle - describes property resource bundlesjava.util.Properties - explains Java properties in a simple XML format.