zoukankan      html  css  js  c++  java
  • 读取设置config.ini配置

     class CSenseIni
        {
            /************************************************************************/
            /*写操作
             * strSection   节
             * strKey       键
             * strValue     需要写入的值
             * strFilePath  配置文件的全路径(wince中使用相对路径)
             */
            /************************************************************************/
            public static void WriteIni(string strSection, string strKey, string strValue, string strFilePath)
            {
                string strCurr = CPlatformConfig.CurrentPath;
                if (strCurr.Length < 2)
                    strCurr += strFilePath;
                else
                    strCurr += "\" + strFilePath;
                INICommon(false, strSection, strKey, strValue, strCurr);
            }
    
            /************************************************************************/
            /* 读操作
             * strSection   节
             * strKey       键
             * strDefault   如果未找到相应键对应的值则填入此值
             * strFilePath  配置文件的全路径(wince中只能使用绝对全路径)
             * 返回:       指定键的相应值
             * 说明:       如果在文件中未找到相应节则添加,未找到相应键亦添加,如果键对应的值为空串则使用默认值填充ini文件并返回
            /************************************************************************/
            public static string GetIni(string strSection, string strKey, string strDefault, string strFilePath)
            {
                string strCurr = CPlatformConfig.CurrentPath;
                if (strCurr.Length < 2)
                    strCurr += strFilePath;
                else
                    strCurr += "\" + strFilePath;
                return INICommon(true, strSection, strKey, strDefault, strCurr);
            }
    
            private static string[] Split(string input, string pattern)
            {
                string[] arr = System.Text.RegularExpressions.Regex.Split(input, pattern);
                return arr;
            }
            private static void AppendToFile(string strPath, string strContent)
            {
                if (strContent.Length == 0)
                    return;
    
                FileStream fs = new FileStream(strPath, FileMode.Append);
                StreamWriter streamWriter = new StreamWriter(fs, System.Text.Encoding.Default);
                streamWriter.BaseStream.Seek(0, SeekOrigin.End);
                streamWriter.WriteLine(strContent);
                streamWriter.Flush();
                streamWriter.Close();
                fs.Close();
            }
            private static void WriteArray(string strPath, string[] strContent)
            {
                FileStream fs = new FileStream(strPath, FileMode.Truncate);
                StreamWriter streamWriter = new StreamWriter(fs, System.Text.Encoding.Default);
                streamWriter.BaseStream.Seek(0, SeekOrigin.Begin);
    
                for (int i = 0; i < strContent.Length; i++)
                {
                    if (strContent[i].Trim() == "
    ")
                        continue;
                    if (strContent[i].Trim() == "")
                        continue;
                    streamWriter.WriteLine(strContent[i].Trim());
                }
    
                streamWriter.Flush();
                streamWriter.Close();
                fs.Close();
            }
            //INI解析
            private static string INICommon(bool isRead, string ApplicationName, string KeyName, string Default, string FileName)
            {
                string strSection = "[" + ApplicationName + "]";
                string strBuf;
                try
                {
                    //a.文件不存在则创建
                    if (!File.Exists(FileName))
                    {
                        FileStream sr = File.Create(FileName);
                        sr.Close();
                    }
                    //读取INI文件
                    System.IO.StreamReader stream = new System.IO.StreamReader(FileName, System.Text.Encoding.Default);
                    strBuf = stream.ReadToEnd();
                    stream.Close();
                }
                catch (Exception e)
                {
    
                    return Default;
                }
    
                string[] rows = Split(strBuf, "
    ");
                string oneRow;
                int i = 0;
                for (; i < rows.Length; i++)
                {
                    oneRow = rows[i].Trim();
    
                    //空行
                    if (0 == oneRow.Length)
                        continue;
    
                    //此行为注释
                    if (';' == oneRow[0])
                        continue;
    
                    //没找到
                    if (strSection != oneRow)
                        continue;
    
                    //找到了
                    break;
                }
    
                //b.没找到对应的section,创建一节并创建属性
                if (i >= rows.Length)
                {
                    AppendToFile(FileName, "
    " + strSection + "
    " + KeyName + "=" + Default);
                    return Default;
                }
    
                //找到section
    
                i += 1; //跳过section  
    
                int bakIdxSection = i;//备份section的下一行
    
                string[] strLeft;
    
                //查找属性
                for (; i < rows.Length; i++)
                {
                    oneRow = rows[i].Trim();
    
                    //空行
                    if (0 == oneRow.Length)
                        continue;
    
                    //此行为注释
                    if (';' == oneRow[0])
                        continue;
    
                    //越界
                    if ('[' == oneRow[0])
                        break;
    
                    strLeft = Split(oneRow, "=");
    
                    if (strLeft == null || strLeft.Length != 2)
                        continue;
    
                    //找到属性
                    if (strLeft[0].Trim() == KeyName)
                    {
                        //
                        if (isRead)
                        {
                            //c.找到属性但没有值
                            if (0 == strLeft[1].Trim().Length)
                            {
                                rows[i] = strLeft[0].Trim() + "=" + Default;
                                WriteArray(FileName, rows);
                                return Default;
                            }
                            else
                            {
                                //找到了                        
                                return strLeft[1].Trim();
                            }
                        }
    
                        //
                        else
                        {
                            rows[i] = strLeft[0].Trim() + "=" + Default;
                            WriteArray(FileName, rows);
                            return Default;
                        }
                    }
                }
    
                //d.没找到对应的属性,创建之并赋为默认
                rows[bakIdxSection] = rows[bakIdxSection] + "
    " + KeyName + "=" + Default;
                WriteArray(FileName, rows);
                return Default;
            }
        }
    /* 获取路径*/
        public class CPlatformConfig
        {
            private static string m_CurrentPath;
    
            private static string Platform
            {
                get
                {
                    return Environment.OSVersion.Platform.ToString();
                }
            }
    
            //获取执行文件所在文件夹的绝对位置
            public static string CurrentPath
            {
                get
                {
                    //m_CurrentPath = @"D:Index";
                    m_CurrentPath = AppDomain.CurrentDomain.BaseDirectory;
                    //if (Platform.Equals("WinCE"))
                    //{
                    //    m_CurrentPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
                    //}
                    //else if (Platform.Equals("Win32NT"))
                    //{
                    //    m_CurrentPath = Directory.GetCurrentDirectory();
                    //}
    
                    return m_CurrentPath;
                }
                set
                {
                    m_CurrentPath = value;
                }
            }
        }
        
     public class CSenseConfig
        {
            //获取&设置 语言: 0-中文 1-英文
            public static int GetLanguage()
            {
                string szLang = CSenseIni.GetIni("Language", "IsEnglish", "1", "config.ini");
                return Convert.ToInt32(szLang);
            }
    
            public static void SetLanguage(int iLanguge)
            {
                CSenseIni.WriteIni("Language", "IsEnglish", iLanguge.ToString(), "config.ini");
            }
    
        }
  • 相关阅读:
    Redis源代码分析(十三)--- redis-benchmark性能測试
    kvm中运行kvm
    umount.nfs device busy day virsh extend diskSpace, attachDisk
    ultravnc
    openNebula dubug
    maintenance ShellScripts
    virsh VMI deploy data serial xml
    cloud computing platform,virtual authentication encryption
    基于C 的libvirt 接口调用
    storage theory
  • 原文地址:https://www.cnblogs.com/lsgsanxiao/p/8674819.html
Copyright © 2011-2022 走看看