Wrapper for program file initialization

08/19/2012 16:56 xmen01235#1
Just getting bored while studying on C# and make this wrapper for parameter initialization.(Wow C# is amazing).

This will include writing/reading on the parameter initialization. This is useful when you are going to make a program on which you are going to save the parameters in the ini files.

Example:
Copath=D\games\conquer.exe
Myname=xmen01235
....
....
....

Code:
internal class iniParam
    {
        private Dictionary <string,string> _params = new Dictionary<string,string>();
        private string _filename;
        public iniParam(string filename)
        {
            _filename = filename;
            this.Read();
        }
        public void Set(string paramname, string paramvalue)
        {

            if (!_params.ContainsKey(paramname))
                _params.Add(paramname, paramvalue);
            else
            {
                _params.Remove(paramname);
                _params.Add(paramname, paramvalue);
            }                    

        }
        public void Save()
        {
            if (_params.Count == 0)
                return;

            System.IO.StreamWriter oWrite= File.CreateText(this._filename);
            oWrite.Close();
            StreamWriter objStreamWriter = new StreamWriter(this._filename, true, Encoding.Unicode);
            foreach (KeyValuePair<string, string> kvp in _params)
            {
                objStreamWriter.WriteLine(kvp.Key + "=" + kvp.Value);
            }            
            objStreamWriter.Close();
        }
        public void Get(string paramname,out string paramvalue)
        {   
            if (_params.Count == 0)
                paramvalue="";
            if (!_params.TryGetValue(paramname, out  paramvalue))
                paramvalue = "";
        }
        private void Read()
        {
            bool invalidFile = false;
            if(this._filename=="")
            {
                invalidFile = true;
                throw new System.ArgumentException("Invalid Filename!");                
            }
            if (invalidFile)
                return;
            try
            {
                StreamReader reader=new StreamReader(this._filename); 
                while(reader.Peek()>=0)
                {
                    try
                    {
                        string line= reader.ReadLine();
                        string[] strSplit;
                        char _operator='=';
                        strSplit=line.Split(_operator);
                        _params.Add(strSplit[0], strSplit[1]);
                    }                   
                    catch
                    {
                        throw new System.ArgumentException("Error in reading file!"); 
                    }

                }
                reader.Close();
            }
            catch
            {
                System.IO.StreamWriter oWrite=File.CreateText(this._filename);
                oWrite.Close();
            }

        }

    }
Implementation:
Definition
Code:
private iniParam myParam=new iniParam("parameters.ini");
Setting a value
Code:
myParam.Set("Copath", "D:\\games\\conquer.exe");
myParam.Set("Myname", "xmen01235");
myParam.Save();
Reading a value
Code:
string _copath,_myName;
myParam.Get("Copath",out _copath);
myParam.Set("Myname",out _myName);