Oft ist es nötig für kleinere Applikationen Einstellungen zu implementieren. Doch vor allem für Konsolen-Anwendungen ist es oft schwierig eine Einstellungs-Seite zu integrieren. Abhilfe schafft hier die Verwendung von “ini”-Dateien, welche die jeweiligen Einstellungen als Text enthalten. Folgend zeigen wir ein Beispiel, wie du einfach eine “ini”-Datei einbinden kannst.
Einstellungen
Wir beginnen mit einer globalen Variabel, welche später unsere Einstellungen beinhalten soll.
private static Dictionary<string, Dictionary<string, string>> Ini = new Dictionary<string, Dictionary<string, string>>();
Ini-Datei einlesen
Anschließend erstellen wir eine Funktion, welche die “ini”-Datei einliest. Dies kann wie folgt aussehen.
private static bool readIniFile()
{
try
{
if (File.Exists(Path.Combine("Resources", "setup.ini")))
{
using (var fs = new FileStream(Path.Combine("Resources", "setup.ini"), FileMode.Open, FileAccess.Read))
{
using (var sr = new StreamReader(fs))
{
var setupFile = sr.ReadToEnd();
List<string> lines = setupFile.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
string property = string.Empty;
foreach (string line in lines)
{
Regex reg = new Regex(@"(?<=\[).+?(?=\])");
if (reg.IsMatch(line) && line.TrimStart().StartsWith("[") && line.TrimEnd().EndsWith("]"))
{
property = reg.Match(line).Value.ToString();
Ini.Add(property, new Dictionary<string, string>());
}
else if(line.TrimStart().StartsWith("#") || line.TrimStart().StartsWith(";"))
{
// Ignore comments
continue;
}
else
{
string[] elements = line.Split('=');
if (elements.Count() != 2) continue;
Ini[property].Add(elements[0].Trim(), elements[1].Trim());
}
}
}
}
return true;
}
else
return false;
}
catch(Exception exc)
{
return false;
}
}