public class FormatPreservingProperties extends Properties
Properties that stores its contents
in the same order and with the same formatting as was used to read
the contents from an input stream. This is useful because it means
that a properties file loaded via this object and then written
back out later on will only be different where changes or
additions were made.
By default, the store(java.io.OutputStream, java.lang.String) method in this class does not
behave the same as Properties.store(java.io.Writer, java.lang.String). You can cause an
instance to approximate the behavior of Properties.store(java.io.Writer, java.lang.String)
by invoking setDefaultEntryDelimiter(char) with =,
setAddWhitespaceAfterDelimiter(boolean) with false, and
setAllowDuplicates(boolean) with true. However, this
will only influence how the instance will write new values, not how
it will write existing key-value pairs that are modified.
In conjunction with a conservative output writer, it is
possible to only write to disk changes / additions.
This implementation does not permit escaped ' ', '=', ':'
characters in key names.| Modifier and Type | Class and Description |
|---|---|
static class |
FormatPreservingProperties.DuplicateKeyException |
defaults| Constructor and Description |
|---|
FormatPreservingProperties() |
FormatPreservingProperties(Properties defaults) |
| Modifier and Type | Method and Description |
|---|---|
void |
clear() |
Object |
clone() |
boolean |
getAddWhitespaceAfterDelimiter()
If set to
true, this properties object will add a
space after the delimiter character(if the delimiter is not
the space character). |
boolean |
getAllowDuplicates()
If set to
true, duplicate properties are allowed, and
the last property setting in the input will overwrite any previous
settings. |
char |
getDefaultEntryDelimiter()
|
boolean |
getInsertTimestamp()
If set to
true, this properties object will add a
timestamp to the beginning of the file, just after the header
(if any) is printed. |
String |
getProperty(String key) |
String |
getProperty(String key,
String defaultValue) |
void |
load(InputStream in)
Loads the properties in
in, according to the rules
described in Properties.load(java.io.Reader). |
Object |
put(Object key,
Object val) |
void |
putAll(Map m)
Circumvents the superclass
putAll(java.util.Map) implementation,
putting all the key-value pairs via put(java.lang.Object, java.lang.Object). |
Object |
remove(Object key)
Removes the key from the bookkeeping collectiotns as well.
|
void |
save(OutputStream out,
String header) |
void |
setAddWhitespaceAfterDelimiter(boolean add)
If set to
true, this properties object will add a
space after the delimiter character(if the delimiter is not
the space character). |
void |
setAllowDuplicates(boolean allowDuplicates)
If set to
true, duplicate properties are allowed, and
the last property setting in the input will overwrite any previous
settings. |
void |
setDefaultEntryDelimiter(char defaultEntryDelimiter)
The character to use as a delimiter between property keys and values.
|
void |
setInsertTimestamp(boolean insertTimestamp)
If set to
true, this properties object will add a
timestamp to the beginning of the file, just after the header
(if any) is printed. |
Object |
setProperty(String key,
String value) |
void |
store(OutputStream out,
String header) |
list, list, load, loadFromXML, propertyNames, store, storeToXML, storeToXML, stringPropertyNamescompute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, elements, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keys, keySet, merge, putIfAbsent, rehash, remove, replace, replace, replaceAll, size, toString, valuespublic FormatPreservingProperties()
public FormatPreservingProperties(Properties defaults)
public void setDefaultEntryDelimiter(char defaultEntryDelimiter)
defaultEntryDelimiter - either ':' or '='public char getDefaultEntryDelimiter()
public void setAddWhitespaceAfterDelimiter(boolean add)
true, this properties object will add a
space after the delimiter character(if the delimiter is not
the space character). Else, this will not add a space.
Default value: true. Note that Properties.store(java.io.Writer, java.lang.String) never writes whitespace.public boolean getAddWhitespaceAfterDelimiter()
true, this properties object will add a
space after the delimiter character(if the delimiter is not
the space character). Else, this will not add a space.
Default value: true. Note that Properties.store(java.io.Writer, java.lang.String) never writes whitespace.public void setInsertTimestamp(boolean insertTimestamp)
true, this properties object will add a
timestamp to the beginning of the file, just after the header
(if any) is printed. Else, this will not add a timestamp.
Default value: false. Note that Properties.store(java.io.Writer, java.lang.String) always writes a timestamp.public boolean getInsertTimestamp()
true, this properties object will add a
timestamp to the beginning of the file, just after the header
(if any) is printed. Else, this will not add a timestamp.
Default value: false. Note that Properties.store(java.io.Writer, java.lang.String) always writes a timestamp.public void setAllowDuplicates(boolean allowDuplicates)
true, duplicate properties are allowed, and
the last property setting in the input will overwrite any previous
settings. If set to false, duplicate property definitions
in the input will cause an exception to be thrown during load(java.io.InputStream).
Default value: false. Note that Properties.store(java.io.Writer, java.lang.String) always allows duplicates.public boolean getAllowDuplicates()
true, duplicate properties are allowed, and
the last property setting in the input will overwrite any previous
settings. If set to false, duplicate property definitions
in the input will cause an exception to be thrown during load(java.io.InputStream).
Default value: false. Note that Properties.store(java.io.Writer, java.lang.String) always allows duplicates.public String getProperty(String key)
getProperty in class Propertiespublic String getProperty(String key, String defaultValue)
getProperty in class Propertiespublic Object setProperty(String key, String value)
setProperty in class Propertiespublic void putAll(Map m)
putAll(java.util.Map) implementation,
putting all the key-value pairs via put(java.lang.Object, java.lang.Object).public void clear()
public void load(InputStream in) throws IOException
in, according to the rules
described in Properties.load(java.io.Reader). If getAllowDuplicates()
returns true, this will throw a FormatPreservingProperties.DuplicateKeyException if duplicate property declarations are
encountered.load in class PropertiesIOExceptionProperties.load(java.io.Reader)public void save(OutputStream out, String header)
save in class Propertiespublic void store(OutputStream out, String header) throws IOException
store in class PropertiesIOExceptionCopyright © 2006–2018 Apache Software Foundation. All rights reserved.