Ejemplo n.º 1
0
        public void Save()
        {
            IniConfigFileSection iniConfigFileSection = new IniConfigFileSection();

            iniConfigFileSection.ConfigItems.Add("AlwaysOntop", _applicationSettings.AlwaysOntop.ToString());
            iniConfigFileSection.ConfigItems.Add("MinimizeToSystemTray", _applicationSettings.MinimizeToSystemTray.ToString());
            iniConfigFileSection.ConfigItems.Add("LogLevel", _applicationSettings.LogLevel.ToString());

            _iniConfigFileManager.ConfigurationData.ConfigSections.Clear();
            _iniConfigFileManager.ConfigurationData.ConfigItems.Clear();
            _iniConfigFileManager.ConfigurationData.ConfigSections.Add(ApplicationSettingsSectionName, iniConfigFileSection);
            _iniConfigFileManager.SaveConfigFile(_appSettingsFilePath);
        }
        public void SaveConfigFile(string path)
        {
            try
            {
                if (!Converters.GetFileNameFromPath(path).EndsWith(".ini"))
                {
                    throw new ArgumentException("Invalid filename. Filename must end with .ini");
                }

                if (File.Exists(path))
                {
                    File.Delete(path);
                }

                FileStream fs = File.Create(path);
                TextWriter tw = new StreamWriter(fs);

                foreach (string rootItemName in _iniFileData.ConfigItems.AllKeys)
                {
                    tw.WriteLine(rootItemName + "=" + _iniFileData.ConfigItems[rootItemName]);
                }

                foreach (string sectionName in _iniFileData.ConfigSections.Keys)
                {
                    IniConfigFileSection section = _iniFileData.ConfigSections[sectionName];
                    tw.WriteLine("[" + sectionName + "]");

                    foreach (string itemName in section.ConfigItems.AllKeys)
                    {
                        tw.WriteLine(itemName + "=" + section.ConfigItems[itemName]);
                    }
                }
                tw.Flush();
                fs.Flush();

                fs.Close();
            }
            catch (Exception ex)
            {
                StatusLogService.Service.LogException(ex);
            }
        }
        public bool LoadConfigFile(string path)
        {
            bool       readSuccessfull = false;
            FileStream fs = null;

            try
            {
                if (!Converters.GetFileNameFromPath(path).EndsWith(".ini") || !File.Exists(path))
                {
                    throw new ArgumentException("File does not exist!");
                }

                fs = File.OpenRead(path);
                TextReader tr = new StreamReader(fs);

                Regex sectionMachRegex    = new Regex(ConfigFileSectionPattern);
                Regex sectionCleanerRegex = new Regex(ConfigSectionNamePattern);
                Regex configItemPattern   = new Regex(ConfigFileItemPattern);

                _iniFileData = new IniConfigFile();
                IniConfigFileSection configSection = new IniConfigFileSection();


                while (fs.Position <= fs.Length)
                {
                    string lineData = tr.ReadLine();

                    if (lineData == null || lineData.Length > 4096)
                    {
                        break;
                    }

                    if (sectionMachRegex.IsMatch(lineData))
                    {
                        string sectionName = sectionCleanerRegex.Replace(lineData, "");
                        if (!_iniFileData.ConfigSections.ContainsKey(sectionName))
                        {
                            _iniFileData.ConfigSections.Add(sectionName, new IniConfigFileSection());
                        }

                        configSection = _iniFileData.ConfigSections[sectionName];
                    }
                    else if (configSection != null && configItemPattern.IsMatch(lineData))
                    {
                        string[] confArr = lineData.Split('=');
                        configSection.ConfigItems[confArr[0].Trim()] = confArr[1].Trim();
                    }
                }
                fs.Close();
                readSuccessfull = true;
            }
            catch (Exception ex)
            {
                StatusLogService.Service.LogException(ex);
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                }
            }

            return(readSuccessfull);
        }