c#使用配置文件

news2025/1/20 7:21:41

在我们开发软件的时候,有时候有很多的配置文件,可以把配置的参数保存到本地,那么肯定要对文件进行读和写的操作,使用SharpConfig可以很简单的实现这个功能。

下面是GitHub的介绍。

https://codeload.github.com/cemdervis/SharpConfig/zip/refs/heads/master

1.使用.net6新建一个控制台程序

2. 在nuget中安装SharpConfig

3.在根目录中建立test.ini,其实别的后缀名文件也可以。

 

文件内容

其中#开头的是注释内容,[]开头的目录,下面的具体值,就是key和value。

# 注释内容
[TEST1]
SomeInteger = 10
SomeFloat = 20.05
[TEST2]
Name = Peter
Age = 50
AnotherEmptyArray = {      }

4. 代码如下

using SharpConfig;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var config = Configuration.LoadFromFile("test.ini");    //读取配置文件夹

            var section = config["TEST1"];         //读取根目录
            var SomeInteger = section["SomeInteger"].StringValue;   //读取具体值
            //var SomeInteger = section["SomeInteger"].IntValue;   //读取具体值
            Console.WriteLine(SomeInteger);

            //section["SomeInteger"].SetValue("6666666666");       //修改值
            section["SomeInteger"].StringValue="7777777777";       //修改值
            config.SaveToFile("test.ini");                       //保存值


            Section test = new Section("TEST3");            //增加根目录
            test.Add(new Setting("A", "123456"));           //增加键值对
            config.Add(test);                               //把键值对增加到文件
            config.SaveToFile("test.ini");                  //保存文件


            Console.WriteLine("Hello, World!");
        }
    }
}

  

每次修改值和增加值的时候,一定要保存文件,否则不会有效果。

而且设置值和修改值的时候, 有多种方式都可以做到,总体来说,还是很不错的,值得推荐使用。

对于官网的介绍其实更加的丰富,也可以直接存对象。

5.也可以直接创建ini文件

using SharpConfig;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //var config = Configuration.LoadFromFile("test.ini");    //读取配置文件夹

            //var section = config["TEST1"];         //读取根目录
            //var SomeInteger = section["SomeInteger"].StringValue;   //读取具体值
            var SomeInteger = section["SomeInteger"].IntValue;   //读取具体值
            //Console.WriteLine(SomeInteger);

            section["SomeInteger"].SetValue("6666666666");       //修改值
            //section["SomeInteger"].StringValue="7777777777";       //修改值
            //config.SaveToFile("test.ini");                       //保存值


            //Section test = new Section("TEST3");            //增加根目录
            //test.Add(new Setting("A", "123456"));           //增加键值对
            //config.Add(test);                               //把键值对增加到文件
            //config.SaveToFile("test.ini");                  //保存文件


            //Console.WriteLine("Hello, World!");

            // Create the configuration.
            var myConfig = new Configuration();

            // Set some values.
            // This will automatically create the sections and settings.
            myConfig["Video"]["Width"].IntValue = 1920;
            myConfig["Video"]["Height"].IntValue = 1080;

            // Set an array value.
            myConfig["Video"]["Formats"].StringValueArray = new[] { "RGB32", "RGBA32" };

            // Get the values just to test.
            int width = myConfig["Video"]["Width"].IntValue;
            int height = myConfig["Video"]["Height"].IntValue;
            string[] formats = myConfig["Video"]["Formats"].StringValueArray;


            myConfig.SaveToFile("1.ini");


        }
    }
}

6.效果,自动创建了1.ini

 

 

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

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

相关文章

常见的锁策略

文章目录一、常见的锁策略乐观锁 vs 悲观锁轻量级锁 vs 重量级锁自旋锁 vs 挂起等待锁互斥锁 vs 读写锁公平锁 vs 非公平锁可重入锁 vs 不可重入锁二、CAS原子类实现自旋锁ABA问题一、常见的锁策略 我们这里所介绍到的锁策略,不仅仅是java中的,任何涉及…

异常检测-缺陷检测-论文精读PaDiM

Abstract 我们提出了一个新的 Patch 分布建模框架,在单类学习的设置下,PaDiM 同时检测和定位图像中的异常。PaDiM 利用一个预先训练好的卷积神经网络 (CNN) 进行 patch 嵌入,利用多元高斯分布得到正常类的概率表示。它还利用了 CNN 的不同语…

基础1-用于癫痫发作预测的卷积门控递归神经网络

A Convolutional Gated Recurrent Neural Network for Epileptic Seizure Prediction ABSTRACT 在本文中,我们提出了一种卷积门控递归神经网络(CGRNN)来预测癫痫发作,基于从EEG数据中提取的代表信号的时间方面和频率方面的特征。使用波士顿儿童医院收集…

priority_queue的介绍及使用(18)

目录 1、priority_queue的介绍 2、priority_queue的使用 3、priority_queue的模拟实现 1、简单实现一个大堆的 2、带仿函数的 1、初识仿函数 2、priority_queue带仿函数版本 3、其他 1、priority_queue的介绍 1、优先队列是一种容器适配器,根据严格的弱排序…

Unity 3D 物理引擎简介 || Unity 3D 物理材质|| Unity 3D 力(AddForce)

Unity 3D 物理引擎简介 早期的游戏并没有强调物理引擎的应用,当时无论是哪一种游戏,都是用极为简单的计算方式做出相应的运算就算完成物理表现,如超级玛丽和音速小子等游戏。 较为常见的物理处理是在跳跃之后再次落到地上,并没有…

百万级数据的导出解决方案

一、传统POI的的版本优缺点比较首先我们知道POI中我们最熟悉的莫过于WorkBook这样一个接口,我们的POI版本也在更新的同时对这个几口的实现类做了更新;HSSFWorkbook : 这个实现类是我们早期使用最多的对象,它可以操作Excel2003以前&#xff08…

SAP 系统内核版本详解

前言:之前两篇简单介绍了ABAP 7.40的新特性,那么有的时候会有这样的情况,根据新特性写代码的时候校验会不通过,这又是为啥呢?会不会跟SAP的版本有关系呢? 那么,首先我们就来看一下在SAP系统中如…

基于TC397的Bootloader开发过程中遇到的问题记录

问题11 现象:刷新流程结束之后上位机通过22服务AFFC读取刷新计数时,刷新计数会偶发地置12 分析思路:尝试用单步调试的方法复现该现象,程序中涉及到刷新计数的更新有两处,一是在34服务中擦flash前,二是在31服…

【数据结构】栈及其经典面试题详解

目录前言一、栈的介绍二、数据类型重定义三、栈的结构四、栈中的常见操作五、测试栈六、栈的常见面试题前言 前面学习的线性表中包含顺序表和链表,这两种数据结构允许在任意位置进行插入和删除,那么有没有一种数据结构是不能在任意位置进行插入删除&…

全面解读MinION纳米孔测序技术及应用

全面解读MinION纳米孔测序技术及应用 link:https://www.seqchina.cn/467.html 【测序中国】 paper:The Oxford Nanopore MinION: delivery of nanopore sequencing to the genomics community https://pubmed.ncbi.nlm.nih.gov/27887629/ 纳米孔测序技术…

知识蒸馏 Knowledge distillation(学习笔记)

知识蒸馏概述 蒸馏:把大的 复杂的东西变成小的纯净的东西 在知识蒸馏中 大的模型为 教师模型(teacher)臃肿 集成 牛逼 复杂的 小的 为 学生模型(student)小的精干的 轻量化的 这里有一个知识的迁移 因为落地实…

相关性模型与回归模型(例题代码)

一、相关性模型(SPSS) 相关性模型涉及到两种最为常用的相关系数: 皮尔逊person相关系数斯皮尔曼spearman等级相关系数 1、皮尔逊相关系数 相关性可视化 总结: 1.如果两个变量本身就是线性的关系,那么皮尔逊相关系…

儿子小伟再婚,新儿媳紧锁眉头,农民歌唱家大衣哥有些过分了

虽然都知道大衣哥儿子小伟结婚,这一天早晚都要到来,但是却没有想到来得那么快,大衣哥儿子小伟的婚礼,在悄无声息中结束了。说起大衣哥儿子小伟,这已经不是第一次结婚了,因为结过婚有经验,这一次…

Linux CFS调度器之pick_next_task函数

文章目录前言一、pick_next_task二、pick_next_task_fair参考资料前言 在内核执行__schedule函数,进程任务切换的时候,__schedule函数函数会调用pick_next_task让调度器从就绪队列中选择最合适的一个进程运行,如下所示: static …

Nerdctl 原生支持 Nydus 加速镜像

文|李楠(GitHub ID : loheagn) 北京航空航天大学 21 级研究生 云原生底层系统的开发和探索工作。 本文 6369 字 阅读 16 分钟 OSPP 开源之夏是由中科院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动。旨在鼓励在…

关于whl,你想知道的

一、whl是什么?whl文件时以wheel格式保存的python安装包,Wheel是Python发行版的标准内置包格式。WHL文件包含Python安装的所有文件和元数据,其中还包括所使用的Wheel版本和打包的规范。WHL文件使用Zip压缩进行压缩,实际上也是一种…

二、TCO/IP---Ethernet和IP协议

TCP/ip协议栈 OSI模型TCP/IP协议栈应用层,表示层,会话层应用层传输层主机到主机层(传输层)网络层网络层数据链路层,物理层网络接入层 Ethernet协议 以太网,实现链路层的数据传输和地址封装(MA…

【Qt】Qt中的拖放操作实现——拖放文件以及自定义拖放操作

文章目录Qt的拖放操作使用拖放打开文件自定义拖放操作文章参考《Qt Creator快速入门(第三版)》。 Qt的拖放操作 拖放操作分为拖动Drag和放下Drop,Qt提供了强大的拖放机制,可在帮助文档中通过Drag and Drop关键字查看。 在Qt中&a…

ArcGIS基础实验操作100例--实验78按栅格分区统计路网

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验78 按栅格分区统计路网 目录 一、实验背景 二、实验数据 三、实验步骤 (…

【数据结构】队列详解

前言 前面我们学习了一种数据结构:栈,栈是一种只允许在一端尽进行插入删除的数据结构,而今天我们将学习另一种数据结构:队列,队列是一种支持在一端进行插入,在另一端进行删除的数据结构。 一、队列的介绍…