private void LoadFile() { _FileContents = new ConcurrentDictionary <string, ConcurrentDictionary <string, string> >(); if (string.IsNullOrEmpty(this.FileName)) { return; } string Contents = CFile.GetFileContents(FileName); Regex Section = new Regex("[" + Regex.Escape(" ") + "\t]*" + Regex.Escape("[") + ".*" + Regex.Escape("]\r\n")); string[] Sections = Section.Split(Contents); MatchCollection SectionHeaders = Section.Matches(Contents); int Counter = 1; foreach (Match SectionHeader in SectionHeaders) { string[] Splitter = { "\r\n" }; string[] Splitter2 = { "=" }; string[] Items = Sections[Counter].Split(Splitter, StringSplitOptions.RemoveEmptyEntries); var SectionValues = new ConcurrentDictionary <string, string>(); foreach (string Item in Items) { if (!String.IsNullOrWhiteSpace(Item)) { SectionValues.TryAdd( Item.Split(Splitter2, StringSplitOptions.None)[0].Trim(), Item.Split(Splitter2, StringSplitOptions.None)[1].Trim()); } } _FileContents.TryAdd(SectionHeader.Value.Replace("[", "").Replace("]\r\n", "").Trim(), SectionValues); ++Counter; } }