Реализация INI конфигурации.
Реализовывал данное чудо чисто для своего использования, но решил выложить как образец.
В файле INI можно оставлять комментарии, но при сохранении нового файла, сохранятся только те комментарии, что были в шапке файла.
Комментарии должны начинатся с символов //
или #
.
# Комментарий 1
// Комментарий 2
Если при чтении INI файла в начале файла находилась неправильно определенная группа элементов или элементы без группы, то все такие строки будут прочитанны как комментарии.
# Комментарий 1
// Комментарий 2
какой-то ключ = какое-то его значение
[группа с косяком
ключ=значеие
[НазваниеГруппы]
Ключ 1 = Значение 1
Ключ 2 = Значение у-у-у-у-у!
INI файл должен быть разбит на группы, все что не входит в состав группы будет пропущено.
# Комментарий 1
// Комментарий 2
[НазваниеГруппы]
Ключ 1 = Значение 1
Ключ 2 = Значение у-у-у-у-у!
Что бы определить пустой INI файл достаточно вызвать конфигурацию, которая не существует. В данном случае в указанном месте, если это возможно будет создан пустой файл.
using Alardinal.Configuration.INI;
Config IniCfg = new Config(new FileInfo("config/empty.ini"));
Что бы определить INI файл с заранее заложенным содержимым, достаточно просто вызвать конфигурацию, которой не существует с передачей метода, определяющий значения по умолчанию.
using Alardinal.Configuration.INI;
Config IniCfg = new Config(new FileInfo("config/not_exists.ini"), delegate(Config cfg)
{
cfg.AddStartComment("Комментарий, который будет помещен в начале файла.");
cfg.AddStartComment("Можно добавить еще один.");
cfg.SetInit("general", "days", 1);
cfg.SetString("general", "test", "Тестовое значение");
cfg.SetConfigMap("general", "test_map", new ConfigMap(new string[] { "А", "так", "можно", "делать", "перечисления." });
});
Если файл, на который вы пытаетесь указать - не существует, то на его месте будет создана конфигурация с определенными вами данными.
#Alardinal INI configuration.
#Комментарий, который будет помещен в начале файла.
#Можно добавить еще один.
[general]
days=1
test=Тестовое значение
test_map=А,так,можно,делать,перечисления.
MIT License, а вообще код для кого угодно.