1. 程式人生 > 其它 >C# 讀取ini檔案

C# 讀取ini檔案

/**
*┌──────────────────────────────────────────────────────────────┐
*│ 描    述:日誌相關的工具類                                                   
*│ 作    者:執筆小白                                              
*│ 版    本:1.0                                       
*│ 建立時間:2020-6-13 15:40:56                            
*└──────────────────────────────────────────────────────────────┘
*┌──────────────────────────────────────────────────────────────┐
*│ 名稱空間: ZhibiXiaobai.Uril.ConfigFileHelper                               
*│ 類    名:OperateFile_InI                                     
*└──────────────────────────────────────────────────────────────┘
*/
using System.Runtime.InteropServices;
using System.Text;

namespace ZhibiXiaobai.Uril.ConfigFileHelper
{
    /// <summary>
    /// InI檔案的讀寫
    /// </summary>
    public class OperateFile_InI
    {
        #region API函式宣告

        [DllImport("kernel32")]//返回0表示失敗,非0為成功
        private static extern long WritePrivateProfileString(string section, string key,
            string val, string filePath);

        [DllImport("kernel32")]//返回取得字串緩衝區的長度
        private static extern long GetPrivateProfileString(string section, string key,
            string def, StringBuilder retVal, int size, string filePath);
        #endregion

        #region 讀Ini檔案

        /// <summary>
        /// 讀Ini檔案
        /// 詳細見INI例子
        /// </summary>
        /// <param name="Section">[Section]標籤的名字</param>
        /// <param name="Key">key</param>
        /// <param name="NoText">未找到值時預設返回的值</param>
        /// <param name="iniFilePath">ini檔案的路徑</param>
        /// <returns></returns>
        public static string ReadIniData(string Section, string Key, string NoText, string iniFilePath)
        {
            if (File.Exists(iniFilePath))
            {
                StringBuilder temp = new StringBuilder(1024);
                GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
                return temp.ToString();
            }
            else
            {
                return String.Empty;
            }
        }

        #endregion

        #region 寫Ini檔案
        /// <summary>
        /// 寫Ini檔案
        /// 詳細見INI例子
        /// </summary>
        /// <param name="Section">[Section]標籤的名字</param>
        /// <param name="Key">key</param>
        /// <param name="Value">key對應的Value</param>
        /// <param name="iniFilePath">ini檔案的路徑</param>
        /// <returns></returns>
        public static bool WriteIniData(string Section, string Key, string Value, string iniFilePath)
        {
            if (File.Exists(iniFilePath))
            {
                long OpStation = WritePrivateProfileString(Section, Key, Value, iniFilePath);
                return OpStation == 0 ? false : true;
            }
            else
            {
                return false;
            }
        }
        #endregion
    }

    /* DBServer.ini結構如下
     * [Head]
     * Head=Head項不可刪除
     * [Server]
     * Name=localhost
     * [DB]
     * Name=NorthWind
     * [User]
     * Name=sa
     */
}

或者使用微軟的Configuration Extensions來讀取ini檔案。