Ini-Datei in C#-Projekt einlesen

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…

Image Description

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;
            }
        }

Was this article helpful to you?

Yes No

Related Articles