public static SettingRow ParseIniLine(this string line) { SettingRow sr = new SettingRow(); string[] pieces = line.Split(new string[] { ":" }, 2, StringSplitOptions.RemoveEmptyEntries); if (pieces.Length == 2) { sr.Setting = pieces[0]; sr.Value = cleanUpValue(pieces[1]); } return(sr); }
public void LoadSettings() { try{ if (File.Exists(SettingsINI)) { this._settings = new Dictionary <string, string>(); string contents = ""; FileInfo fi = new FileInfo(this.SettingsINI); using (StreamReader sr = fi.OpenText()) { contents = sr.ReadToEnd(); } if (!string.IsNullOrEmpty(contents)) { string[] lines = contents.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.None); foreach (string line in lines) { if (line.IsSettingLine()) { SettingRow sr = line.ParseIniLine(); KeyValuePair <string, string> kvp = new KeyValuePair <string, string>(sr.Setting, sr.Value); if (!string.IsNullOrEmpty(kvp.Key) && !string.IsNullOrEmpty(kvp.Value)) { if (!Settings.ContainsKey(kvp.Key)) { Settings.Add(kvp.Key, kvp.Value); } else { Settings[kvp.Key] += MULTI_DELIM + kvp.Value; } } } } } } }catch (Exception ex) { } }
public static string CreateIniLine(this SettingRow setting) { return(setting.Setting + ":\t" + setting.Value); }
public bool SaveSettings() { List <String> lines = new List <string>(); using (StreamReader sr = File.OpenText(this.SettingsINI)) { while (sr.Peek() >= 0) { lines.Add(sr.ReadLine()); } } IList <SettingRow> settingLines = new List <SettingRow>(); foreach (string line in lines) { if (line.IsSettingLine()) { SettingRow sr = line.ParseIniLine(); sr.Row = lines.IndexOf(line); settingLines.Add(sr); } } // var settingLines = lines.Where(xx => xx.IsSettingLine()) // .Select(xx => // { // SettingRow sr =xx.ParseIniLine(); // sr.Row = lines.IndexOf(xx); // return sr; // }); foreach (SettingRow sr in settingLines) { if (this.Settings.ContainsKey(sr.Setting)) { if (!this[sr.Setting].Equals(sr.Value)) { sr.Value = this[sr.Setting]; lines[sr.Row] = sr.CreateIniLine(); } } } IList <string> settingKeys = new List <string>(); foreach (SettingRow sr in settingLines) { settingKeys.Add(sr.Setting); } // var settingKeys = settingLines.Select(xx => xx.Setting); foreach (KeyValuePair <string, string> setting in this.Settings) { if (!settingKeys.Contains(setting.Key)) { lines.Add(setting.CreateIniLine()); } } bool r = false; using (FileStream fs = File.Create(this.SettingsINI)) { using (StreamWriter sw = new StreamWriter(fs)) { foreach (String line in lines) { sw.WriteLine(line); } r = true; } } return(r); }