static List <iniUnit> paraIni(List <string> allLines) { int index = -1; List <iniUnit> iniData = new List <iniUnit>(); foreach (string str in allLines) { if (str.Length <= 0) { continue; } if (str.Contains("[") && str.Contains("]")) { ++index; iniUnit iu = new iniUnit(); iu.section = str.Substring(1, str.Length - 2); iniData.Add(iu); } else { int indexEqual = str.IndexOf('='); Dictionary <string, string> temp = new Dictionary <string, string>(); string key = str.Substring(0, indexEqual); string value = str.Substring(indexEqual + 1, str.Length - indexEqual - 1); temp.Add(key, value); iniData[index].pairsList.Add(temp); } } return(iniData); }
/// <summary> /// 获取section下面的所有键值对 /// </summary> /// <param name="section"></param> /// <param name="path"></param> /// <returns></returns> public static Dictionary <string, string> getAllPair(string section, string path) { Dictionary <string, string> returnValue = new Dictionary <string, string>(); List <iniUnit> iniData = read(path); iniUnit findSection = iniData.Find(data => { if (data.section == section) { return(true); } else { return(false); } }); if (findSection != null) { for (int i = 0; i < findSection.pairsList.Count; i++) { foreach (KeyValuePair <string, string> pair in findSection.pairsList[i]) { returnValue.Add(pair.Key, pair.Value); } } } return(returnValue); }
/// <summary> /// Reads the ini. /// </summary> /// <returns>The ini.</returns> /// <param name="section">Section.</param> /// <param name="key">Key.</param> /// <param name="path">Path.</param> public static string ReadIni(string section, string key, string path, bool local = false) { List <iniUnit> iniData = read(path, local); iniUnit findSection = iniData.Find(data => { if (data.section == section) { return(true); } else { return(false); } }); if (findSection != null) { for (int i = 0; i < findSection.pairsList.Count; i++) { foreach (KeyValuePair <string, string> pair in findSection.pairsList[i]) { if (pair.Key == key) { return(pair.Value); } } } return(""); } else { return(""); } }
/// <summary> /// 写INI文件,但webplayer模式下不支持 /// </summary> /// <param name="section"></param> /// <param name="key"></param> /// <param name="value"></param> /// <param name="path"></param> public static void writeIni(string section, string key, string value, string path) { #if UNITY_STANDALONE_WIN List <iniUnit> iniData = read(path); string[] ary = File.ReadAllLines(path); iniUnit findSection = iniData.Find(data => { if (data.section == section) { return(true); } else { return(false); } }); if (findSection != null) { for (int i = 0; i < findSection.pairsList.Count; i++) { if (findSection.pairsList[i].ContainsKey(key)) { findSection.pairsList[i][key] = value; for (int j = 0; j < ary.Length; j++) { if (ary[j].Contains("[" + section + "]")) { for (int k = j + 1; k < ary.Length; k++) { if (ary[k].Contains("[") || ary[k].Contains("]")) { break; } else { if (ary[k].Contains(key + "=")) { ary[k] = key + "=" + value; break; } } } } } } } } File.WriteAllLines(path, ary); #endif }
/// <summary> /// check is exist section /// </summary> /// <param name="section"></param> /// <param name="path"></param> /// <returns></returns> public static bool isExistSection(string section, string path) { List <iniUnit> iniData = read(path); iniUnit findSection = iniData.Find(data => { if (data.section == section) { return(true); } else { return(false); } }); if (findSection != null) { return(true); } else { return(false); } }