using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Collections; using System.Text.RegularExpressions; namespace NetMonitorClient { class InIReader { private StreamReader file; private ArrayList cont = new ArrayList(); public InIReader(string filename) { this.file = new StreamReader(filename); FileSystemWatcher k = new FileSystemWatcher(Directory.GetCurrentDirectory(), "*.ini"); k.Changed += new FileSystemEventHandler(this.readAgain); loadFile(); } private void readAgain(object sender, EventArgs e) { this.file.BaseStream.Seek(0, SeekOrigin.Begin); loadFile(); } private void loadFile() { string fline = ""; while (fline != null) { fline = this.file.ReadLine(); if (fline != null) cont.Add(fline); } } public ArrayList getSections() { ArrayList ret = new ArrayList(); foreach (string sOutput in this.cont) { Match match = Regex.Match(sOutput, @"^\[[a-zA-Z0-9\-_]+\]\w*$", RegexOptions.IgnoreCase); if (match.Success) ret.Add(sOutput); } return ret; } public String getValue(String section, String key) { bool sec = false; foreach (string sOutput in this.cont) { if (sOutput == section) sec = true; if (sec && Regex.Match(sOutput, @"^\w*$").Success) sec = false; Match match = Regex.Match(sOutput, @"^" + Regex.Escape(key) + "=", RegexOptions.IgnoreCase); if (match.Success && sec) { try { return sOutput.Split('=')[1]; } catch (Exception) { return null; } } } return null; } } }