自己写的ini 文件操作的类

ini 文件操作的类

今天没有什么工作,找了些资料,写一个操作ini文件的类,已经测试过了,也算是技术积累吧!哈哈.......

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;


namespace IniFile
{
        /// <summary>
        ///创建一个新的ini文件或读取ini文件数据
        /// </summary>
        public class IniFile
        {
            private string m_Path;

            # region Windows API Functions
            [DllImport("kernel32")]
            public static extern long WritePrivateProfileString(string lpAppName,
                string lpKeyName, string lpReturnString, string lpFilePath);

            [DllImport("kernel32")]
            public static extern int GetPrivateProfileString(string lpAppName,
                string lpKeyName, string lpDefault, byte[] byBuffer, int size, string lpFilePath);

            [DllImport("kernel32")]
            public static extern int WritePrivateProfileSection(string lpAppName,
                string lpString, string lpFileName);

            [DllImport("kernel32")]
            public static extern int GetPrivateProfileSection(string lpAppName,
                string lpReturnString, string lpFilePath);

            [DllImport("kernel32")]
            public static extern int GetPrivateProfileInt(string lpAppName,
                string lpKeyName, int iDefault, string lpFilePath);
            #endregion

            /// <summary>
            /// ini文件构造方法
            /// </summary>
            /// <PARAM ></PARAM>
            public IniFile(string strIniPath)
            {
                m_Path = strIniPath;
            }


            /// <summary>
            /// 向ini文件中写数据
            /// </summary>
            /// <param >项</param>
            /// <param >关键字</param>
            /// <param >值</param>
            /// <returns></returns>
            public long SetValue(string section, string key, string value)
            {
                return WritePrivateProfileString(section, key, value, m_Path);
            }

            /// <summary>
            /// 从ini文件中的项目下的关键字中读数据
            /// </summary>
            /// <param >项</param>
            /// <param >关键字</param>
            /// <returns></returns>
            private string[] GetValues(string section, string key)
            {
                byte[] buff;
                int BUFFER_SIZE = 0xff;
                int iCount, iBufferSize, iMultiple = 0;
                do
                {
                    iMultiple++;
                    iBufferSize = BUFFER_SIZE * iMultiple;
                    buff = new byte[iBufferSize];
                    iCount = GetPrivateProfileString(section, key, "", buff, iBufferSize, m_Path);
                }
                while (iCount == iBufferSize - 2);

                for (int i = 0; i < iCount; ++i)
                {
                    if (buff[i] == 0 && iCount != i + 1 && buff[i + 1] != 0)
                    {
                        buff[i] = (int)'/n';
                        continue;
                    }
                    if (i > 0 && buff[i - 1] == 0 && buff[i] == 0) break;
                }
                string strResult = Encoding.Default.GetString(buff).Trim();
                return strResult.Trim(new char[] { '/0' }).Split(new char[] { '/n' });
            }
            /// <summary>
            /// 根据项和关键字读取数据值
            /// </summary>
            /// <param ></param>
            /// <param ></param>
            /// <returns></returns>
            public string GetValue(string section, string key)
            {
                if (section == null || key == null)
                {
                    throw new NullReferenceException("Section or Key");
                }
                return GetValues(section, key)[0];
            }
            /// <summary>
            /// 根据项读取所有的关键字
            /// </summary>
            /// <param >项</param>
            /// <returns>字符串数组</returns>
            public string[] GetKeys(string section)
            {
                if (section == null)
                {
                    throw new NullReferenceException("Section");
                }
                return GetValues(section, null);
            }
            /// <summary>
            /// 获取ini文件中所有的项
            /// </summary>
            /// <returns>字符串数组</returns>    
            public string[] GetSections()                           
            {
                return GetValues(null, null);
            }
            /// <summary>
            /// 设置项下关键子对应的数字
            /// </summary>
            /// <param >项</param>
            /// <param >关键字</param>
            /// <param >数字</param>
            /// <returns>数字类型long</returns>
            public long SetValueInt(string section, string key, int value)
            {
                return SetValue(section, key, value.ToString());
            }
            /// <summary>
            /// 获取项下关键字所对应的数字值
            /// </summary>
            /// <param >项</param>
            /// <param >关键字</param>
            /// <returns>数字值</returns>
            public int GetValueInt(string section, string key)
            {
                return GetPrivateProfileInt(section, key, -1, m_Path);
            }
            /// <summary>
            /// 设置项下的关键字
            /// </summary>
            /// <param >项</param>
            /// <param >关键字</param>
            /// <returns>数字类型int</returns>
            public int SetSection(string strSection, string strKeyValue)
            {
                return WritePrivateProfileSection(strSection, strKeyValue, m_Path);
            }
            /// <summary>
            /// 删除项下的所有内容
            /// </summary>
            /// <param >项</param>
            /// <returns></returns>
            public int DeleteSection(string strSection)
            {
                return SetSection(strSection, null);
            }
            /// <summary>
            /// 删除项下的关键字
            /// </summary>
            /// <param ></param>
            /// <param ></param>
            /// <returns></returns>
            public long  DeleteKey(string strSection, string strKey)
            {
                return WritePrivateProfileString(strSection, strKey, null, m_Path);
            }
        }


}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值