.NET程序配置文件操作(ini,cfg,config)

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

在程序开发过程中,我们一般会用到配置文件来设定一些参数。常见的配置文件格式为 ini, xml, config等。

INI

.ini文件,通常为初始化文件,是用来存储程序配置信息的文本文件。

[Login]
#开启加密 0:不开启、1:开启
open\_ssl\_certificate=0

.NET 框架本身不支持 INI 文件,可以利用 Windows API方法使用平台调用服务来写入和读取文件。

// 要写入的部分名称 - sectionName
// 要设置的键名 - key
// 要设置的值 - value
// INI文件位置 - filepath
// 读取是否成功 - result
[DllImport("kernel32")]
bool WritePrivateProfileString(string sectionName,string key,string value,string filepath);// 要读取的部分名称 - sectionName
// 要读取的键名 - key
// 如果键不存在返回的默认值 - default
// 接收用作缓冲区的字符串 - ReturnedVal
// 实际读取的值 - maxsize
// INI文件位置 - filepath
[DllImport("kernel32")]
int GetPrivateProfileString(string sectionName,string key,string default,StringBuilder ReturnedVal,int maxsize,string filepath);

一般会封装一个类来调用该API方法。

public class ReadWriteINIFile{...public void WriteINI(string name, string key, string value){WritePrivateProfileString(name, key, value, _path);}public string ReadINI(string name, string key){StringBuilder sb = new StringBuilder(255);int ini = GetPrivateProfileString(name, key, "", sb, 255, _path);return sb.ToString();}
}

CFG

SharpConfig 是 .NET 的CFG/INI 配置文件操作组件,以文本或二进制格式读取,修改和保存配置文件和流。

Configuration config = Configuration.LoadFromFile("login.cfg");
Section section = config["Login"];
// 读取参数
bool isOpen = section["open\_ssl\_certificate"].GetValue<bool>();
// 修改参数
section["open\_ssl\_certificate"].Value = false;

Config

在 App.config/web.config 文件中的 configSections 节点下配置 section 节点,.NET 提供自带的类型进行封装。
configSections节点必须为configuration下第一个节点

NameValue键值对

xml version="1.0" encoding="utf-8" ?
<configuration>	<configSections>		<section name="NameValueConfigNode" type="System.Configuration.NameValueSectionHandler"/>	configSections>	<NameValueConfigNode>		<add key="Name一" value="Value一" />		<add key="Name二" value="Value二" />		NameValueConfigNode>    <startup>         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />    startup>
configuration>

定义一个静态属性的方法获取 Dictionary 格式的数据:

/// 
/// NameValueCollection
/// 
public static Dictionary<string, string> NameValueConfigNode
{get{NameValueCollection nvc = (NameValueCollection)ConfigurationManager.GetSection("NameValueConfigNode");Dictionary<string, string> result = new Dictionary<string,string>();foreach (string key in nvc.AllKeys){ result.Add(key, nvc[key]);}return result;}
}

Dictionary

xml version="1.0" encoding="utf-8" ?
<configuration><configSections><section name="DictionaryConfigNode" type="System.Configuration.DictionarySectionHandler"/>configSections><DictionaryConfigNode><add key="Key一" value="DictValue一" /><add key="Key二" value="DictValue二" />DictionaryConfigNode><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />startup>
configuration>
/// 
/// Dictionary
/// 
public static Dictionary<string, string> DictionaryConfigNode
{get{IDictionary dict = (IDictionary)ConfigurationManager.GetSection("DictionaryConfigNode");Dictionary<string, string> result = new Dictionary<string, string>();foreach (string key in dict.Keys){result.Add(key, dict[key].ToString());}return result;}
}

SingTag

xml version="1.0" encoding="utf-8" ?
<configuration><configSections><section name="SingleTagConfigNode" type="System.Configuration.SingleTagSectionHandler" />configSections><SingleTagConfigNode PropertyOne="1" PropertyTwo="2" PropertyThree="3" PropertyFour="4" PropertyFive="5" /><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />startup>
configuration>
/// 
/// SingleTag
/// 
public static Dictionary<string, string> SingleTagConfigNode
{get{Hashtable dict = (Hashtable)ConfigurationManager.GetSection("SingleTagConfigNode");Dictionary<string, string> result = new Dictionary<string, string>();foreach (string key in dict.Keys){result.Add(key, dict[key].ToString());}return result;}
}

自定义配置文件

如果配置文件很多,可以单独定义配置文件,然后在 App.config/Web.config 文件中声明。

xml version="1.0" encoding="utf-8" ?
<configuration><configSections><section name="MyConfigData1" type="ConsoleApplication.ConfigFiles.ConfigFile,ConsoleApplication"/>configSections><MyConfigData configSource="ConfigFiles\MyConfigFile.config"/><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />startup>
configuration>

自定义文件 MyConfigFile.config 内容:

xml version="1.0" encoding="utf-8" ?
<MyConfigData><add key="Key一" value="自定义文件一" /><add key="Key二" value="自定义文件二" /><add key="Key三" value="自定义文件三" />
MyConfigData>

XML

XML文件常用于简化数据的存储和共享,它的设计宗旨是传输数据,而非显示数据。对于复杂不规则的配置信息也可以用XML文件进行存储。

// 读取文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("myfile.xml");
// 根节点
var nodeRoot = xmlDoc.DocumentElement;
// 创建新节点
XmlElement studentNode = xmlDoc.CreateElement("student");
// 创建新节点的孩子节点
XmlElement nameNode = xmlDoc.CreateElement("name");
// 建立父子关系
studentNode.AppendChild(nameNode);
nodeRoot.AppendChild(studentNode);

XML基础教程:https://www.w3school.com.cn/xml/index.asp

我的公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MSP432P401R TI Drivers 库函数学习笔记(四)GPIO

目录API头文件函数 (机翻)宏GPIO驱动程序api返回的通用状态代码GPIO_PinConfig输出引脚配置宏GPIO_PinConfig输入引脚配置宏GPIO_PinConfig中断配置宏特殊的GPIO_PinConfig配置宏类型别名示例配置引脚示例配置外部中断示例上机实战配置引脚main.cmyTask.cmyTask.h实验结果平台&…

# Vue3 toRef 和 toRefs 函数

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

二分检索函数lower_bound()和upper_bound()

二分检索函数lower_bound()和upper_bound() 一、说明 头文件&#xff1a;<algorithm> 二分检索函数lower_bound()和upper_bound() lower_bound()&#xff1a;找到大于等于某值的第一次出现upper_bound()&#xff1a;找到大于某值的第一次出现必须从小到大排序后才能用 内…

MSP432P401R TI Drivers 库函数学习笔记(五)PWM

目录API (机翻)函数上机实战配置引脚PWM初始化&#xff0c;实现简易呼吸灯的效果实验结果完整代码myPWM.cmyPWM.hmyTask.cmyTask.hmain.cmain.h平台&#xff1a;Code Composer Studio 10.4.0 MSP432P401R SimpleLink™ 微控制器 LaunchPad™ 开发套件 (MSP-EXP432P401R) API …

防火墙配置十大任务之十,构建虚拟防火墙

防火墙配置任务十构建虚拟防火墙任务拓扑图10.11.inside区域的交换机的基本配置&#xff0c;在交换机上开启vlan2&#xff0c;vlan3&#xff0c;vlan4.三个vlan。图10.22.outside区域的Internet基本配置。图10.33.交换机上连接防火墙接口的配置。图10.44.inside区域各个PC的主机…

使用纯 CSS 实现超酷炫的粘性气泡效果

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP432P401R TI Drivers 库函数学习笔记(六)UART 串口

目录API (机翻)上机实战配置初始化和实验实验结果整体代码myUart.cmyUart.hmyTask.cmyTask.hmain.cmain.h平台&#xff1a;Code Composer Studio 10.4.0 MSP432P401R SimpleLink™ 微控制器 LaunchPad™ 开发套件 (MSP-EXP432P401R) API (机翻) 官方UART API 手册 void UA…

Linux 批量杀死进程(详细版本)

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP432 库函数实现 PID 电机调角度、调速

目录引脚配置PWM引脚外部中断测量编码器引脚配置代码部分初始化编码器解读Encoder.cEncoder.h测速和控制部分卡尔曼滤波器&#xff0c;用于对所测速度进行滤波kalman.ckalman.h实验效果速度滤波效果控速效果控角效果平台&#xff1a;Code Composer Studio 10.4.0 MSP432P401R …

20.网页卷去的距离与偏移量

我们先来看看下面的图&#xff1a; scrollLeft:设置或获取位于给定对象左边界与窗口中目前可见内容的最左端之间的距离 &#xff0c;即左边灰色的内容。 scrollTop:设置或获取位于对象最顶端与窗口中可见内容的最顶端之间的距离 &#xff0c;即上边灰色的内容。 offsetLeft:获取…

【电赛】一阶卡尔曼滤波器 滤波效果良好

目录代码kalman.ckalman.h滤波效果很久以前抄的&#xff0c;忘了是从哪弄的了 我把它改成了这种结构体指针传参的形式&#xff0c;方便在比赛中应用。应用举例见MSP432 PID 电机调角度、调速。 它曾助力笔者获2020年电赛省一等奖。 代码 Q:过程噪声协方差 Q参数调滤波后的曲线…

计算机是如何启动的?

从打开电源到开始操作&#xff0c;计算机的启动是一个非常复杂的过程。 我一直搞不清楚&#xff0c;这个过程到底是怎么回事&#xff0c;只看见屏幕快速滚动各种提示......这几天&#xff0c;我查了一些资料&#xff0c;试图搞懂它。下面就是我整理的笔记。 零、boot的含义 先问…

hdu 1536(博弈)

传送门&#xff1a;S-Nim 题意&#xff1a;给n个数的集合s&#xff0c; 再给m 组数据&#xff0c;每组表示 k 堆石子&#xff0c;每次可以取的个数只能是集合s中的数量。问先手胜还是输&#xff1f; 分析&#xff1a;sg函数的经典运用&#xff0c;先预处理出所有数量为0~10000的…

写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP432P401R TI Drivers 库函数学习笔记(七)I2C驱动OLED屏幕

目录API (机翻)上机实战引脚配置I2C引脚配置工作指示灯LED1引脚配置文件结构I2C 初始化、读写函数myI2C.cmyI2C.hOLED初始化和测试代码main.cmain.hOLED 驱动程序OLED.cOLED.hOLED_Font.h任务管理myTask.cmyTask.h显示效果平台&#xff1a;Code Composer Studio 10.4.0 MSP432…

在WPF中实现玻璃模糊效果

在WPF中实现玻璃模糊效果还是比较简单的&#xff0c;主要方式如下&#xff1a; 添加一个Rectangle或其它控件作为玻璃放到顶部图层 将底部图像作为Brush&#xff08;大多数的时候用VisualBrush&#xff09;填充到Rectangle中 对该Rectangle添加高斯模糊效果 在该Rectangle上叠加…

MSP432P401R TI Drivers 库函数学习笔记(八)ADC

目录API (机翻)上机实战引脚配置ADC引脚配置串口引脚配置指示工作状态的LED1引脚配置代码部分ADC初始化和读取函数myADC.cmyADC.h获取数据并通过串口发送main.cmain.h任务管理函数myTask.cmyTask.h串口代码myUart.cmyUart.h实验结果平台&#xff1a;Code Composer Studio 10.4.…

PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据

介绍承接上文的PHP 杂谈《重构-改善既有代码的设计》之 重新组织你的函数继续重构方面的内容。这章主要针对数据的重构。1、争论的声音——直接访问Field还是通过函数&#xff08;Accessor&#xff09;访问Field2.修改Array为Object&#xff1a;当你看到一个Array很像一个数据结…

Python迷宫生成器

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP430F5529 DriverLib 库函数I2C驱动OLED屏幕

目录I2C驱动代码MSP430F5529_I2C.cMSP430F5529_I2C.hOLED初始化及测试OLED驱动代码OLED.cOLED.hOLED_Font.h显示效果平台&#xff1a;Code Composer Studio 10.4.0 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) I2C驱动代码 P3.0为SDA&#xff0c;P3.1为S…