文档章节

C#操作ini配置文件

崔晓
 崔晓
发布于 2015/05/22 12:32
字数 414
阅读 15
收藏 0
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

namespace Qing.QConfigs
{
    /// <summary>
    /// ini配置
    /// </summary>
    public class IniConfig
    {
        private string configFile = "";
        /// <summary>
        /// 配置文件
        /// </summary>
        public string ConfigFile
        {
            set
            {
                if (string.IsNullOrEmpty(value)) configFile = "";
                else
                {
                    FileInfo info = new FileInfo(value);
                    configFile = info.FullName;
                }
            }
            get { return configFile; }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        public IniConfig() { }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="configFile">配置文件</param>
        public IniConfig(string configFile)
        {
            ConfigFile = configFile;
        }

        /// <summary>
        /// 读取整型配置项
        /// </summary>
        /// <param name="section">节点</param>
        /// <param name="key">键值</param>
        /// <param name="def">默认值,缺省为0</param>
        /// <returns>值</returns>
        public int Read(string section, string key, int def)
        {
            return GetPrivateProfileInt(section, key, def, ConfigFile);
        }
        /// <summary>
        /// 读取字符串配置项
        /// </summary>
        /// <param name="section">节点</param>
        /// <param name="key">键值</param>
        /// <param name="def">默认值,缺省为空字符串</param>
        /// <param name="len">读取长度</param>
        /// <returns>值</returns>
        public string Read(string section, string key, string def, int len = 1024)
        {
            StringBuilder temp = new StringBuilder(len);
            GetPrivateProfileString(section, key, def, temp, len, ConfigFile);
            return temp.ToString();
        }

        /// <summary>
        /// 写入整型配置项
        /// </summary>
        /// <param name="section">节点</param>
        /// <param name="key">键值</param>
        /// <param name="value">值</param>
        /// <returns>是否成功</returns>
        public bool Write(string section, string key, int value)
        {
            return WritePrivateProfileString(section, key, value.ToString(), ConfigFile);
        }
        /// <summary>
        /// 写入字符串配置项
        /// </summary>
        /// <param name="section">节点</param>
        /// <param name="key">键值</param>
        /// <param name="value">值</param>
        /// <returns>是否成功</returns>
        public bool Write(string section, string key, string value)
        {
            return WritePrivateProfileString(section, key, value, ConfigFile);
        }

        /// <summary>
        /// 移除配置项
        /// </summary>
        /// <param name="section">节点</param>
        /// <param name="key">键值</param>
        /// <returns>是否成功</returns>
        public bool Remove(string section, string key)
        {
            return WritePrivateProfileString(section, key, null, ConfigFile);
        }
        /// <summary>
        /// 移除节点
        /// </summary>
        /// <param name="section">节点</param>
        /// <returns>是否成功</returns>
        public bool Remove(string section)
        {
            return WritePrivateProfileString(section, null, null, ConfigFile);
        }

        [DllImport("kernel32")]
        private static extern int GetPrivateProfileInt(string lpAppName, string lpKeyName, int nDefault, string lpFileName);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
        [DllImport("kernel32")]
        private static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);
    }
}



© 著作权归作者所有

上一篇: 编码规范浅谈
下一篇: 单例模式(C#)
崔晓
粉丝 1
博文 5
码字总数 3001
作品 1
深圳
程序员
私信 提问
配置文件操作组件--SharpConfig

SharpConfig 是 .NET 的 CFG/INI 配置文件操作组件。 配置文件示例: [General] a comment SomeString = Hello World!SomeInteger = 10 # an inline commentSomeFloat = 20.05ABoolean = tru......

叶秀兰
2015/07/02
1K
0
『随笔』C# 程序 修改 ConfigurationManager 后,不重启 刷新配置

基本共识: ConfigurationManager 自带缓存,且不支持 写入。 如果 通过 文本写入方式 修改 配置文件,程序 无法刷新加载 最新配置。 PS. Web.config 除外:Web.config 修改后,网站会重启 ...

InkFx
2016/09/07
0
0
c#开发大全、系列文章、精品教程

全栈工程师开发手册 (作者:栾鹏) c#系列教程: c#实现ajax通信:向后台发送JSON字符串,接收响应字符串,并转换为对象 c#文件夹常用操作,属性设置,遍历、压缩 c#获取网页源代码的5种方式...

luanpeng825485697
2017/10/03
0
0
C#读写INI文件

作者: 盛放 http://oraasp.vicp.net/article/article.aspx?ID=26 虽然微软早已经建议在WINDOWS中用注册表代替INI文件,但是在实际应用中,INI文件仍然有用武之地,尤其现在绿色软件的流行,...

晨曦之光
2012/03/09
162
0
C#下.NET配置文件使用(一)

一步一步来,看看.net下的的 Configuration 或者说 Settings 走马观花 System.Configuration 命名空间中的东西是为读写应用程序的配置数据服务的。 在Windows早期,程序使用 .ini 作为配置文...

晨曦之光
2012/05/08
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊nacos的NacosDiscoveryAutoConfiguration

序 本文主要研究一下nacos的NacosDiscoveryAutoConfiguration NacosDiscoveryAutoConfiguration nacos-spring-boot-project/nacos-discovery-spring-boot-autoconfigure/src/main/java/com/a......

go4it
19分钟前
4
0
如何保证消息的顺序性?

面试题 如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题...

米兜
24分钟前
6
0
变量求解:RMT函数

1. RMT函数:计算贷款每月付款额 = PMT (贷款利率,付款限期,本金) 2.单变量求解: 数据选项卡----> 模拟分析------>单变量求解:单变量求解前必须先执行PMT函数...

东方墨天
25分钟前
2
2
网络安全市场需求

最近,网络安全技能差距的热门话题流传开来。技能差距经常被紧急讨论,可以看出它在实践中的作用是很大的。但信息安全是一门广泛的学科,所以在谈论“技能差距”时需要更具体。有专家表示,真...

linuxCool
45分钟前
3
0
饿了么快应用初体验

作者:饿了么 顾诚 为什么我们选择了快应用 在很长一段时间里,原生饿了么应用对于新用户来说体验成本略高,对于迫切想要点餐的老用户操作有点繁琐;而 Web 版的饿了么应用在体验、速度、功能...

前端老手
47分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部