1. 程式人生 > >C# winform 建立,修改,刪除 ini配置檔案

C# winform 建立,修改,刪除 ini配置檔案

using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.InteropServices;

namespace EmailCustomer

{

    class IniFile

    {

        private string path;

        ///   <summary> 

        ///   例項初始化為指定路徑的INI檔案。 

        ///   </summary> 

        ///   <param   name= "path "> INI檔案路徑。 </param> 

        public IniFile(string path)

        {

            this.path = path;

        }

        ///   <summary> 

        ///   獲取INI檔案的路徑。 

        ///   </summary> 

        public string Path

        {

            get

            {

                return path;

            }

        }

        ///   <summary> 

        ///   讀取指定小節下指定條目的字串。 

        ///   </summary> 

        ///   <param   name= "sectionName "> 欲在其中查詢條目的小節名稱。這個字串不區分大小寫。 </param> 

        ///   <param   name= "keyName "> 欲獲取的項名或條目名。這個字串不區分大小寫。 </param> 

        ///   <param   name= "defaultValue "> 指定的條目沒有找到時返回的預設值。 </param> 

        ///   <returns> 指定小節下指定條目的字串。 </returns> 

        ///   <remarks> 如果sectionName為null,則返回所有小節的列表,如果keyName為null,指定小節所有項的列表。 </remarks> 

        public string ReadString(string sectionName, string keyName, string defaultValue)

        {

            const int MAXSIZE = 255;

            StringBuilder temp = new StringBuilder(MAXSIZE);

            GetPrivateProfileString(sectionName, keyName, defaultValue, temp, 255, this.path);

            return temp.ToString();

        }

        public void WriteString(string sectionName, string keyName, string value)

        {

            WritePrivateProfileString(sectionName, keyName, value, this.path);

        }

        public int ReadInteger(string sectionName, string keyName, int defaultValue)

        {

            return GetPrivateProfileInt(sectionName, keyName, defaultValue, this.path);

        }

        public void WriteInteger(string sectionName, string keyName, int value)

        {

            WritePrivateProfileString(sectionName, keyName, value.ToString(), this.path);

        }

        public bool ReadBoolean(string sectionName, string keyName, bool defaultValue)

        {

            int temp = defaultValue ? 1 : 0;

            int result = GetPrivateProfileInt(sectionName, keyName, temp, this.path);

            return (result == 0 ? false : true);

        }

        public void WriteBoolean(string sectionName, string keyName, bool value)

        {

            string temp = value ? "1 " : "0 ";

            WritePrivateProfileString(sectionName, keyName, temp, this.path);

        }

        ///   <summary> 

        ///   刪除這個項現有的字串。 

        ///   </summary> 

        ///   <param   name= "sectionName "> 要設定的項名或條目名。這個字串不區分大小寫。 </param> 

        ///   <param   name= "keyName "> 要刪除的項名或條目名。這個字串不區分大小寫。 </param> 

        public void DeleteKey(string sectionName, string keyName)

        {

            WritePrivateProfileString(sectionName, keyName, null, this.path);

        }

        ///   <summary> 

        ///   刪除這個小節的所有設定項。 

        ///   </summary> 

        ///   <param   name= "sectionName "> 要刪除的小節名。這個字串不區分大小寫。 </param> 

        public void EraseSection(string sectionName)

        {

            WritePrivateProfileString(sectionName, null, null, this.path);

        }

        [DllImport("kernel32")]

        public static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);

        [DllImport("kernel32")]

        public static extern int GetPrivateProfileInt(string lpApplicationName, string lpKeyName, int nDefault, string lpFileName);

        [DllImport("kernel32")]

        public static extern int GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);

    }

}