예제 #1
0
        /// <summary>
        /// Writes the settings into a file.
        /// </summary>
        /// <param name="filePath">Filepath of the settings file</param>
        public void Save(string filePath)
        {
            IniData ini = new IniData();

            foreach (var mapper in mappers)
            {
                ini.AddSection(mapper.Key, mapper.Value.ToDictionary());
            }
            Dictionary <string, string> generalSettings = new Dictionary <string, string>();

            generalSettings["Language"] = LanguageManager.getInstance().Language;
            ini.AddSection("General", generalSettings);
            File.WriteAllText(filePath, ini.Serialize());
        }
예제 #2
0
파일: IniData.cs 프로젝트: luckydag/XOutput
        public static IniData Deserialize(StreamReader sr)
        {
            var ini = new IniData();

            // 0 readsectionheader
            // 1 readsectiondata
            int    state = 0;
            string line;
            string sectionHeader             = null;
            Dictionary <string, string> data = new Dictionary <string, string>();

            for (int linecount = 1; (line = sr.ReadLine()) != null; linecount++)
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }
                line = removeComment(line);
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }
                switch (state)
                {
                case 0:
                    sectionHeader = readSectionHeader(line);
                    state         = 1;
                    break;

                case 1:
                    if (line[0] == '[')
                    {
                        ini.AddSection(sectionHeader, data);
                        data          = new Dictionary <string, string>();
                        sectionHeader = readSectionHeader(line);
                    }
                    else
                    {
                        var valuePair = readValue(line);
                        data.Add(valuePair.Key, valuePair.Value);
                    }
                    break;

                default:
                    throw new InvalidOperationException();
                }
            }
            ini.AddSection(sectionHeader, data);
            return(ini);
        }