.net精簡框架組下的ini檔案讀取(C#)

來源:互聯網
上載者:User
無論是.net框架組還是.net精簡框架組都能非常完美的支援XML檔案,並且微軟也強烈建議用xml檔案取代ini檔案,但是在工控領域大部分的工程都是採用ini檔案配置的系統資訊的。

       以前的隧道管理系統是採用ini檔案配置資訊的,為了實現相容,只好在下位機也採用ini檔案配置資訊。由於WinCE平台不提供ini檔案讀取的api函數GetPrivateProfileString,所以需要自行編寫,前一段時間提供了一個EVC版本的ini檔案讀取,後來在DA66x的WinCE平台上全部採用C#編程,所以不得以需要開發一個C#版本的ini讀取函數。

        這是我在原有項目代碼的基礎上摘編的一個ini讀取函數。

//讀取INI檔案;
        private string GetPrivateProfileString(string ApplicationName, string KeyName,string Default, string FileName)
        {
            string[] iniItems = new string[0];
            string iniLines;
            string iniLine;
            int i, j; 
            try
            {
                //讀取INI檔案;
                System.IO.StreamReader iniFile = new System.IO.StreamReader(FileName, System.Text.Encoding.Default);
                iniLines = iniFile.ReadToEnd();
                iniFile.Close();
            }
            catch 
            {
                return Default;
            }
            //以斷行符號符分割,得到每一行
            iniItems = iniLines.Split(' ');
            //遍曆每一行
            for (i = 0; i < iniItems.GetLength(0); i++) 
            {
                //找到匹配值
                if (iniItems[i].Trim().ToUpper() == '[' + ApplicationName.Trim().ToUpper() + ']')
                {
                    //從下一行開始搜尋
                    for (j = i + 1; j < iniItems.GetLength(0); j++)
                    {
                        iniLine = iniItems[j].Trim();
                        if (iniLine.Length > 0)
                        {
                            //如果找到了另一個段,那麼就越段了,則返回預設值
                            if (iniLine[0] == '[' && iniLine[iniLine.Length - 1] == ']') return Default; 
                        }
                        //去掉所有空格
                        iniLine = iniItems[j].TrimStart().Replace(" ", "");
                        if (iniLine.Substring(0, Math.Min(KeyName.Length + 1, iniLine.Length)).ToUpper() == KeyName.ToUpper() + "=")
                        { 
                            //如果找到了Key匹配
                            return iniItems[j].Substring(iniItems[j].IndexOf('=') + 1);
                        }
                    }
                    return Default;//沒有找到key匹配的,則返回預設值
                }
            }
            return Default;//返回預設值
        }       

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.