Here is a new way of reading and writing .ini files in C#.
It’s an alternative INI file parser written by me. It uses Regex and Collections. I’m only posting a part of the source code because it is too long. But if you scroll a little bit you can download the full source with a Demo project included.
Please redistribute and modify under the terms of GNU LGPL v3.0.
Source code:
using System; using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Globalization; namespace MPIniReadWrite { class MultiplatformIni { private String iniFilePath; public String IniPath { get { return iniFilePath; } } private static Char decSep = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator.ToCharArray()[0]; private static Regex keyValRegex = new Regex( @"((\s)*(?<Key>([^\=^\n]+))[\s^\n]*\=(\s)*(?<Value>([^\n]+(\n){0,1})))", RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled | RegexOptions.CultureInvariant ); private static Regex secRegex = new Regex( @"(\[)*(?<Section>([^\]^\n]+))(\])" , RegexOptions.Compiled | RegexOptions.CultureInvariant ); private ArrayList newValues = new ArrayList(); struct sectKeyVal { public String section, key, value; public sectKeyVal(String section, String key, String value) { this.section = section; this.key = key; this.value = value; } } public MultiplatformIni(String iniFilePath) { this.iniFilePath = iniFilePath; } ~MultiplatformIni() { Flush(); } // Source code truncated...
Download the full source code and an example (Visual C# 2005 Express Project)
I’ve compiled this using .NET framework 2.0 and Mono 2.2 with no problem. Have fun!