/// <summary> /// Rewrites a complete INI File. This erases Comments. /// </summary> /// <param name="FileName">File Name</param> /// <param name="Parts">INI Sections (aka. Parts)</param> public static void RewriteINI(string FileName, INIPart[] Parts) { if (Parts != null && Parts.Length > 0) { var Content = string.Empty; foreach (INIPart p in Parts) { Content += string.Format("[{0}]\r\n", p.Section); foreach (var k in p.Settings.AllKeys) { Content += string.Format("{0}={1}\r\n", k, Program.toEmpty(p.Settings[k])); } Content += "\r\n"; } File.Delete(FileName); File.WriteAllText(FileName, Content.Trim()); } }
/// <summary> /// Sets a single Value. /// Prevents Comments from being overwritten. /// </summary> /// <param name="FileName">File Name</param> /// <param name="Section">INI Section</param> /// <param name="Setting">INI Setting</param> /// <param name="Value">Value to set</param> public static void setSetting(string FileName, string Section, string Setting, string Value) { if (!string.IsNullOrEmpty(FileName) && File.Exists(FileName)) { if (!string.IsNullOrEmpty(Section) && !string.IsNullOrEmpty(Setting)) { var Lines = File.ReadAllLines(FileName); var inSect = false; for (int i = 0; i < Lines.Length; i++) { if (inSect) { if (Lines[i].ToLower().StartsWith(Setting.ToLower() + "=")) { Lines[i] = Lines[i].Split('=')[0] + "=" + Program.toEmpty(Value); break; } else if (Lines[i].StartsWith("[") && Lines[i].EndsWith("]")) { inSect = false; } } else { inSect = (Lines[i].ToLower().Trim() == "[" + Section.ToLower() + "]"); } } File.WriteAllLines(FileName, Lines); } } else { File.WriteAllText(FileName, string.Format("[{0}]\r\n{1}={2}", Section, Setting, Value)); } }