using System.IO; namespace ZeroLevel.Services.Config.Implementation { /// /// Write config to ini-file /// public class IniFileWriter : IConfigurationWriter { /// /// Config file path /// private readonly string _iniPath; public IniFileWriter(string iniPath) { _iniPath = iniPath; } /// /// Write config to file /// public void WriteConfiguration(IConfiguration configuration) { using (TextWriter writer = new StreamWriter(_iniPath, false)) { foreach (string key in configuration.Keys) { if (configuration.Count(key) > 0) { foreach (string value in configuration[key]) { writer.WriteLine(key.Trim() + "=" + value.Trim()); } } else { writer.WriteLine(key.Trim()); } } writer.Flush(); } } /// /// Write configuration set to file /// public void WriteConfigurationSet(IConfigurationSet configuration) { using (TextWriter writer = new StreamWriter(_iniPath, false)) { foreach (string section in configuration.SectionNames) { if (false == section.Equals(Configuration.DEFAULT_SECTION_NAME, System.StringComparison.Ordinal)) writer.WriteLine("[" + section + "]"); foreach (string key in configuration[section].Keys) { if (configuration[section].Count(key) > 0) { foreach (string value in configuration[section][key]) { writer.WriteLine(key + "=" + value); } } else { writer.WriteLine(key); } } } writer.Flush(); } } } }