当前位置: 首页 > news >正文

C#中读写INI配置文件

在作应用系统开发时,管理配置是必不可少的。例如数据库服务器的配置、安装和更新配置等等。由于Xml的兴起,现在的配置文件大都是以xml文档来存储。比如Visual Studio.Net自身的配置文件Mashine.config,Asp.Net的配置文件Web.Config,包括我在介绍Remoting中提到的配置文件,都是xml的格式。传统的配置文件ini已有被xml文件逐步代替的趋势,但对于简单的配置,ini文件还是有用武之地的。ini文件其实就是一个文本文件,它有固定的格式,节Section的名字用[]括起来,然后换行说明key的值:
[section]
key=value
如数据库服务器配置文件:

DBServer.ini
[Server]

Name=localhost
[DB]
Name=NorthWind
[User]
Name=sa

在C#中,对配置文件的读写是通过API函数来完成的,代码很简单:

using System;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;

namespace PubOp
{
    public class OperateIniFile
    {
        API函数声明#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

        读Ini文件#region 读Ini文件

        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

        写Ini文件#region 写Ini文件

        public static bool WriteIniData(string Section,string Key,string Value,string iniFilePath)
        {
            if(File.Exists(iniFilePath))
            {
                long OpStation = WritePrivateProfileString(Section,Key,Value,iniFilePath);   
                if(OpStation == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return false;
            }
        }

        #endregion
    }
}

简单说明以下方法WriteIniData()和ReadIniData()的参数。

Section参数、Key参数和IniFilePath不用再说,Value参数表明key的值,而这里的NoText对应API函数的def参数,它的值由用户指定,是当在配置文件中没有找到具体的Value时,就用NoText的值来代替。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 前端入门知识分享:HTML 页面中 head 标签之间的代码详解
  • Laravel API资源收集器:打造高效数据响应的秘诀
  • springboot智能健康管理平台-计算机毕业设计源码57256
  • 【系统架构设计师】二十二、嵌入式系统架构设计理论与实践③
  • 【Docker系列】Docker 中-d 和-it 的区别
  • 【Redis 进阶】事务
  • 51单片机和STM32区别
  • vite+typescript项目 报错:找不到模块“./*.vue”或其相应的类型声明——解决方案
  • 仓颉语言 -- 网络编程
  • 编程入门:大学新生的指南与策略
  • Docker 和 Docker Compose 的区别对比
  • AI学习指南机器学习篇-Q学习的优缺点
  • Python面试宝典第25题:括号生成
  • 反序列化靶机serial
  • ThreadLocal:线程本地变量的作用与应用
  • [case10]使用RSQL实现端到端的动态查询
  • Druid 在有赞的实践
  • export和import的用法总结
  • IndexedDB
  • JavaScript DOM 10 - 滚动
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • maya建模与骨骼动画快速实现人工鱼
  • PAT A1017 优先队列
  • PHP 小技巧
  • VUE es6技巧写法(持续更新中~~~)
  • vue:响应原理
  • Windows Containers 大冒险: 容器网络
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 大主子表关联的性能优化方法
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 将 Measurements 和 Units 应用到物理学
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 通信类
  • 异常机制详解
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (13)Hive调优——动态分区导致的小文件问题
  • (Java)【深基9.例1】选举学生会
  • (LeetCode 49)Anagrams
  • (solr系列:一)使用tomcat部署solr服务
  • (ZT)薛涌:谈贫说富
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .naturalWidth 和naturalHeight属性,
  • .net 7 上传文件踩坑
  • .net core Swagger 过滤部分Api