public class HierarchicalINIConfiguration extends AbstractHierarchicalFileConfiguration
A specialized hierarchical configuration implementation for parsing ini files.
An initialization or ini file is a configuration file typically found on Microsoft's Windows operating system and contains data for Windows based applications.
Although popularized by Windows, ini files can be used on any system or platform due to the fact that they are merely text files that can easily be parsed and modified by both humans and computers.
A typical ini file could look something like:
[section1] ; this is a comment! var1 = foo var2 = bar [section2] var1 = doo
The format of ini files is fairly straight forward and is composed of three
components:
key = value
format.There are various implementations of the ini file format by various vendors which has caused a number of differences to appear. As far as possible this configuration tries to be lenient and support most of the differences.
Some of the differences supported are as follows:
var1 : foo
.Global parameters are also allowed; any parameters declared before a section is declared are added to a global section. It is important to note that this global section does not have a name.
In all instances, a parameter's key is prepended with its section name and a
'.' (period). Thus a parameter named "var1" in "section1" will have the key
section1.var1
in this configuration. (This is the default
behavior. Because this is a hierarchical configuration you can change this by
setting a different ExpressionEngine
.)
default = ok [section1] var1 = foo var2 = doodle [section2] ; a comment var1 = baz var2 = shoodle bad = = worse [section3] # another comment var1 : foo var2 : bar var5 : test1 [section3] var3 = foo var4 = bar var5 = test2 [sectionSeparators] passwd : abc=def a:b = "value"
This ini file will be parsed without error. Note:
getProperty("default")
.getProperty("section1.var1")
.getProperty("section2. ")
, notice the
period '.' and the space following the section name.passwd
and the value abc=def
.
This default behavior can be changed by using quotes. If there is a separator
character before the first quote character (ignoring whitespace), this
character is used as separator. Thus the second property definition in the
section has the key a:b
and the value value
.Internally, this configuration maps the content of the represented ini file to its node structure in the following way:
HierarchicalConfiguration
for querying or
manipulating the hierarchy of configuration nodes, for instance the
configurationAt()
method for obtaining the data of a specific
section. However, be careful that the storage scheme described above is not
violated (e.g. by adding multiple levels of nodes or inserting duplicate
section nodes). Otherwise, the special methods for ini configurations may not
work correctly!
The set of sections in this configuration can be retrieved using the
getSections()
method. For obtaining a
SubnodeConfiguration
with the content of a specific section the
getSection()
method can be used.
Note: Configuration objects of this type can be read concurrently by multiple threads. However if one of these threads modifies the object, synchronization has to be performed manually.
AbstractHierarchicalFileConfiguration.FileConfigurationDelegate
HierarchicalConfiguration.BuilderVisitor, HierarchicalConfiguration.Node, HierarchicalConfiguration.NodeVisitor
Modifier and Type | Field and Description |
---|---|
protected static String |
COMMENT_CHARS
The characters that signal the start of a comment line.
|
protected static String |
SEPARATOR_CHARS
The characters used to separate keys from values.
|
EVENT_ADD_NODES, EVENT_CLEAR_TREE, EVENT_SUBNODE_CHANGED
END_TOKEN, EVENT_ADD_PROPERTY, EVENT_CLEAR, EVENT_CLEAR_PROPERTY, EVENT_READ_PROPERTY, EVENT_SET_PROPERTY, START_TOKEN
Constructor and Description |
---|
HierarchicalINIConfiguration()
Create a new empty INI Configuration.
|
HierarchicalINIConfiguration(File file)
Create and load the ini configuration from the given file.
|
HierarchicalINIConfiguration(String filename)
Create and load the ini configuration from the given file.
|
HierarchicalINIConfiguration(URL url)
Create and load the ini configuration from the given url.
|
Modifier and Type | Method and Description |
---|---|
SubnodeConfiguration |
getSection(String name)
Returns a configuration with the content of the specified section.
|
Set<String> |
getSections()
Return a set containing the sections in this ini configuration.
|
protected boolean |
isCommentLine(String line)
Determine if the given line is a comment line.
|
protected boolean |
isSectionLine(String line)
Determine if the given line is a section.
|
void |
load(Reader reader)
Load the configuration from the given reader.
|
void |
save(Writer writer)
Save the configuration to the specified writer.
|
addNodes, addPropertyDirect, clearProperty, clearTree, configurationChanged, configurationError, containsKey, createDelegate, fetchNodeList, getBasePath, getDelegate, getEncoding, getFile, getFileName, getFileSystem, getKeys, getKeys, getProperty, getReloadingStrategy, getReloadLock, getURL, isAutoSave, isEmpty, load, load, load, load, load, load, refresh, reload, resetFileSystem, save, save, save, save, save, save, setAutoSave, setBasePath, setDelegate, setEncoding, setFile, setFileName, setFileSystem, setProperty, setReloadingStrategy, setURL, subnodeConfigurationChanged
clear, clearNode, clearNode, clearReferences, clone, configurationAt, configurationAt, configurationsAt, createAddPath, createNode, createSubnodeConfiguration, createSubnodeConfiguration, fetchAddNode, findLastPathNode, findPropertyNodes, getDefaultExpressionEngine, getExpressionEngine, getMaxIndex, getRoot, getRootNode, interpolatedConfiguration, nodeDefined, nodeDefined, removeNode, removeNode, setDefaultExpressionEngine, setExpressionEngine, setRoot, setRootNode, subset
addErrorLogListener, addProperty, append, clearPropertyDirect, copy, createInterpolator, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getDefaultListDelimiter, getDelimiter, getDouble, getDouble, getDouble, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getInterpolator, getList, getList, getListDelimiter, getLogger, getLong, getLong, getLong, getProperties, getProperties, getShort, getShort, getShort, getString, getString, getStringArray, getSubstitutor, interpolate, interpolate, interpolateHelper, isDelimiterParsingDisabled, isScalarValue, isThrowExceptionOnMissing, resolveContainerStore, setDefaultListDelimiter, setDelimiter, setDelimiterParsingDisabled, setListDelimiter, setLogger, setThrowExceptionOnMissing
addConfigurationListener, addErrorListener, clearConfigurationListeners, clearErrorListeners, createErrorEvent, createEvent, fireError, fireEvent, getConfigurationListeners, getErrorListeners, isDetailEvents, removeConfigurationListener, removeErrorListener, setDetailEvents
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addProperty, clear, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getDouble, getDouble, getDouble, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getList, getList, getLong, getLong, getLong, getProperties, getShort, getShort, getShort, getString, getString, getStringArray, subset
protected static final String COMMENT_CHARS
protected static final String SEPARATOR_CHARS
public HierarchicalINIConfiguration()
public HierarchicalINIConfiguration(String filename) throws ConfigurationException
filename
- The name pr path of the ini file to load.ConfigurationException
- If an error occurs while loading the filepublic HierarchicalINIConfiguration(File file) throws ConfigurationException
file
- The ini file to load.ConfigurationException
- If an error occurs while loading the filepublic HierarchicalINIConfiguration(URL url) throws ConfigurationException
url
- The url of the ini file to load.ConfigurationException
- If an error occurs while loading the filepublic void save(Writer writer) throws ConfigurationException
writer
- - The writer to save the configuration to.ConfigurationException
- If an error occurs while writing the
configurationpublic void load(Reader reader) throws ConfigurationException
clear()
method is not called so the configuration read in will
be merged with the current configuration.reader
- The reader to read the configuration from.ConfigurationException
- If an error occurs while reading the
configurationprotected boolean isCommentLine(String line)
line
- The line to check.protected boolean isSectionLine(String line)
line
- The line to check.public Set<String> getSections()
public SubnodeConfiguration getSection(String name)
HierarchicalConfiguration.configurationAt(String)
with
the name of the section in question. There are the following differences
however:
addProperty()
has been used in a way that does not conform
to the storage scheme used by HierarchicalINIConfiguration
.
If used correctly, there will not be duplicate sections.)name
- the name of the section in question; null represents
the global sectionCopyright © 2001–2013 The Apache Software Foundation. All rights reserved.