C#操作ini文件

首先了解什么是ini文件 什么是ini

了解ini文件的格式:

[section]

key=value

以上为一个ini文件的基本格式,section 是段落名,key是键名,value为键所对应的值。英文分号后面所有内容为注释内容,例如

;这是一条注释

 


[Company]
CompanyName=x
CompanyAddress=zhongguo

以上为本次讲解使用的一个简单ini文件。

创建一个ini文件的操作类,

public static class IniFunc
    {
        /// <summary>
        /// 获取值
        /// </summary>
        /// <param name="section">段落名</param>
        /// <param name="key">键名</param>
        /// <param name="defval">读取异常是的缺省值</param>
        /// <param name="retval">键名所对应的的值,没有找到返回空值</param>
        /// <param name="size">返回值允许的大小</param>
        /// <param name="filepath">ini文件的完整路径</param>
        /// <returns></returns>
        [DllImport("kernel32.dll")]
        private static extern int GetPrivateProfileString(
            string section,
            string key,
            string defval,
            StringBuilder retval,
            int size,
            string filepath);

        /// <summary>
        /// 写入
        /// </summary>
        /// <param name="section">需要写入的段落名</param>
        /// <param name="key">需要写入的键名</param>
        /// <param name="val">写入值</param>
        /// <param name="filepath">ini文件的完整路径</param>
        /// <returns></returns>
        [DllImport("kernel32.dll")]
        private static extern int WritePrivateProfileString(
            string section,
            string key,
            string val,
            string filepath);


        /// <summary>
        /// 获取数据
        /// </summary>
        /// <param name="section">段落名</param>
        /// <param name="key">键名</param>
        /// <param name="def">没有找到时返回的默认值</param>
        /// <param name="filename">ini文件完整路径</param>
        /// <returns></returns>
        public static string getString(string section, string key, string def, string filename)
        {
            StringBuilder sb = new StringBuilder(1024);
            GetPrivateProfileString(section, key, def, sb, 1024, filename);
            return sb.ToString();
        }

        /// <summary>
        /// 写入数据
        /// </summary>
        /// <param name="section">段落名</param>
        /// <param name="key">键名</param>
        /// <param name="val">写入值</param>
        /// <param name="filename">ini文件完整路径</param>
        public static void writeString(string section, string key, string val, string filename)
        {
            WritePrivateProfileString(section, key, val, filename);
        }
    }

注释已经写得足够明白,不做过多解释。

 

调用方法

            string filename = @"D:\Program Files\y\test\ConsoleApplication1\Config.ini";
            string name = IniFunc.getString("Company", "CompanyName", "", filename);
            Console.WriteLine("公司名称:{0}", name);
            Console.WriteLine("现在修改公司名称!");
            string company = Console.ReadLine();
            IniFunc.writeString("Company", "CompanyName", company, filename);
            name = IniFunc.getString("Company", "CompanyName", "", filename);
            Console.WriteLine("公司名称:{0}", name);
            Console.Read();

 几个注意事项:

  1. ini文件的路径必须使用绝对路径。
  2. ini文件首行留空,否则无法获取到值,原因未知。


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值