using System.IO;
namespace ZeroLevel.Services.Config.Implementation
{
///
/// Запись конфигурации в ini-файл
///
public class IniFileWriter
: IConfigurationWriter
{
///
/// Путь к ini-файлу
///
private readonly string _iniPath;
///
/// Инициализирует новый экземпляр класса
///
/// Путь к ini-файлу
public IniFileWriter(string iniPath)
{
_iniPath = iniPath;
}
///
/// Запись простой конфигурации
///
/// Конфигурация
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();
}
}
///
/// Запись конфигурации разбитой по секциям
///
/// Конфигурация
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();
}
}
}
}