INI files

Energy.Base.Ini provides simple INI file parsing. The main type is Energy.Base.Ini.IniFile, a dictionary whose keys are section names and whose values are Energy.Base.Collection.StringDictionary objects containing key/value pairs.

Features

  • Configurable section brackets ([] by default).

  • Configurable key/value separators (= by default).

  • Configurable comment characters (; by default).

  • Case-sensitive or case-insensitive key lookup.

  • Optional empty section name.

  • Whitespace trimming.

  • Reading and writing whole files.

Example

string content = @"
; Database settings
[Database]
Server=localhost
Port=3306
Database=test

[Logging]
Level=Debug
File=log.txt
";

Energy.Base.Ini.IniFile ini = new Energy.Base.Ini.IniFile();
ini.Parse(content);

Console.WriteLine("Server: {0}", ini["Database"]["Server"]);
Console.WriteLine("Port: {0}", ini["Database"]["Port"]);

// change a value
ini["Database"]["Port"] = "3307";

string output = ini.ToString();
Console.WriteLine(output);

Loading and saving

Energy.Base.Ini.IniFile ini = new Energy.Base.Ini.IniFile();
ini.Load("settings.ini");
ini.Load("settings.ini", System.Text.Encoding.UTF8);

ini["Application"]["Name"] = "MyApp";
System.IO.File.WriteAllText("settings.ini", ini.ToString());

Configuration

Property Default Description
CaseSensitive true Key comparison is case-sensitive.
AllowEmptySection true Allow entries before the first section.
IgnoreWhiteSpace true Trim leading and trailing whitespace.
CommentCharacters { ";" } Lines starting with these are ignored.
KeyValueSeparators { "=" } Strings that separate key and value.
SectionBrackets { "[]" } Strings that enclose section names.