iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >.NetCore中如何读取配置文件
  • 837
分享到

.NetCore中如何读取配置文件

2023-06-29 09:06:46 837人浏览 八月长安
摘要

小编给大家分享一下.netcore中如何读取配置文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在应用程序开发中,配置文件是主要存储系统的初始配置信息,配置文件的读取虽然属于基础内容却又经常用到,所以百丈高楼平地起,学习

小编给大家分享一下.netcore中如何读取配置文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

在应用程序开发中,配置文件是主要存储系统的初始配置信息,配置文件的读取虽然属于基础内容却又经常用到,所以百丈高楼平地起,学习.net core,就从学习配置文件开始。在.net framework时代,配置文件主要是xml格式【WEB.config,app.config】,且每次修改,需要重启,但是在.Net Core中,由于跨平台的关系,配置文件多以JSON【appsetting.json】的形式存在,且可以进行热加载。本文以一些简单的小例子,简述如何在.Net Core中进行配置文件【Json,xml,ini,环境变量等】的读取,仅供学习分享使用,如有不足之处,还请指正。

涉及知识点

在本例中,主要进行.Net Core开发环境下的配置文件读取,涉及知识点如下:

 IConfiguration:.Net Core中应用程序配置的操作接口,主要提供了对Json,xml,ini ,环境变量,内存数据等的读取功能。

ConfigurationBuilder:用于构建应用程序配置接口的构建器工具类。

安装插件

在.Net Core中,要实现配置文件的读取,需要依赖以下几个插件包,可以通过Nuget进行安装。具体如下所示:

.NetCore中如何读取配置文件

注意:.Net Core对不同文件的解析,在不同的插件库中,可以根据实际项目需要分别进行安装。此处也体现了面向对象的设计思想【如:开闭原则,单一职责原则】。

读取Json文件

1. 准备数据

首先准备一个Json文件,如下所示:

{  "Name": "Alan.hsiang",  "Age": 20,  "Sex": "male",  "Like": ["basketball","football","swimming"],  "Score": {    "LandLit": 90,    "Mathematics": 99,    "English": 50  }}

2. 创建IConfiguration接口实例

在.Net Core中,读取配对文件是通过IConfiguration接口操作的,实例化接口对象如下所示:

IConfiguration configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory).AddJsonFile("student.json").Build();

3. 通过索引器进行读取

默认情况下,IConfiguration接口提供了索引器,以Key为参数进行读取,返回字符串对象,如下所示:

 var name = configuration["Name"]; //IConfiguration接口自带的索引器,只返回字符串类型。如:名字 var like0 = configuration["Like:0"];//读取数组中第一个元素 如:第一个爱好 var like2 = configuration["Like:2"];//读取数组中第三个元素 如:第三个爱好 var landLit = configuration["Score:LandLit"];//获取字节点的属性值,如:语文成绩

注意:如果Json数据有层级关系,则通过冒号【:】进行表示。

4. 通过GetValue<T>()方法进行读取

通过索引器只能返回字符串类型的值,如果需要读取其他简单类型的对象,如:int,float等,则可以通过GetValue<T>()方法进行,具体如下所示:

 var age = configuration.GetValue<int>("Age");//获取其他数据类型,如:int,如:年龄

5. 读取数组

通过索引器和泛型方法,可以读取简单类型的对象,如果需要读取复杂对象【如:数组,列表等】,则需要使用绑定,如下所示:

 //获取整个数组,如:爱好 var like = new List<string>(); configuration.Bind("Like",like);

6. 整体对象绑定

以上示例都是对Json文件局部数据的读取,那么可以将整个文件转换为对象吗?这样直接操作对象将对很方便快捷。具体如下所示:

首先复制整个Json文件的内容,然后依次点击【编辑-->选择性粘贴-->将JSON粘贴为类】菜单,如下所示:

.NetCore中如何读取配置文件

默认生成的类名为RootObject,然后修改为Student,具体如下所示:

namespace DemoCore{    public class Student    {        public string Name { get; set; }        public int Age { get; set; }        public string Sex { get; set; }        public string[] Like { get; set; }        public Score Score { get; set; }    }    public class Score    {        public int LandLit { get; set; }        public int Mathematics { get; set; }        public int English { get; set; }    }}

将Student类和配置对象进行绑定,如下所示:

 //2. 复杂读取 var student = new Student(); configuration.Bind(student); Console.WriteLine($"name={student.Name},age={student.Age},like= {string.Join(",", student.Like)},score={student.Score.English}");

7. Json示例截图

.NetCore中如何读取配置文件

读取XML文件

在应用程序开发中,XML文件也是比较常用的一种配置文件。对XML文件的读取操作和Json文件操作基本相似,具体如下所示:

1. 创建XML文件

首先创建一个XML文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?><Student>    <Name>Alan.hsiang</Name>    <Age>20</Age>    <Sex>male</Sex>    <Likes>        <Like>basketball</Like>        <Like>football</Like>        <Like>swimming</Like>    </Likes>    <Score>        <LandLit>90</LandLit>        <Mathematics>98</Mathematics>        <English>60</English>    </Score></Student>

2. 简单读取

通过索引器和GetValue可以进行读取,如下所示:

//1. 基础读取var age = configuration.GetValue<int>("Age");//获取其他数据类型,如:int,如:年龄var name = configuration["Name"]; //IConfiguration接口自带的索引器,只返回字符串类型。如:名字var like0 = configuration["Likes:Like:0"];//读取数组中第一个元素 如:第一个爱好var like2 = configuration["Likes:Like:2"];//读取数组中第三个元素 如:第三个爱好var landLit = configuration["Score:LandLit"];//获取字节点的属性值,如:语文成绩

注意:读取数组中的元素时,和json读取不同,因为json中是一个节点,但是在xml中是三个节点。

3. 读取数组

读取XML中的数组列表,如下所示:

 //获取整个数组,如:爱好 var like = new List<string>(); configuration.Bind("Likes:Like", like); Console.WriteLine($"name={name},age={age},like= {string.Join(",", like)}");

4. 整体绑定对象

以上示例都是对XML文件局部数据的读取,那么可以将整个文件转换为对象吗?这样直接操作对象将对很方便快捷。具体如下所示:

首先复制整个XML文件的内容,然后依次点击【编辑-->选择性粘贴-->将XML粘贴为类】菜单,如下所示:

.NetCore中如何读取配置文件

默认生成的类,类名与XML的根节点保持一致,如下所示:

namespace DemoCore{    // 注意: 生成的代码可能至少需要 .NET Framework 4.5 或 .NET Core/Standard 2.0。    /// <remarks/>    [System.SerializableAttribute()]    [System.ComponentModel.DesignerCateGoryAttribute("code")]    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]    public partial class Student    {        private string nameField;        private byte ageField;        private string sexField;        private string[] likesField;        private StudentScore scoreField;        /// <remarks/>        public string Name        {            get            {                return this.nameField;            }            set            {                this.nameField = value;            }        }        /// <remarks/>        public byte Age        {            get            {                return this.ageField;            }            set            {                this.ageField = value;            }        }        /// <remarks/>        public string Sex        {            get            {                return this.sexField;            }            set            {                this.sexField = value;            }        }        /// <remarks/>        [System.Xml.Serialization.XmlArrayItemAttribute("Like", IsNullable = false)]        public string[] Likes        {            get            {                return this.likesField;            }            set            {                this.likesField = value;            }        }        /// <remarks/>        public StudentScore Score        {            get            {                return this.scoreField;            }            set            {                this.scoreField = value;            }        }    }    /// <remarks/>    [System.SerializableAttribute()]    [System.ComponentModel.DesignerCategoryAttribute("code")]    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]    public partial class StudentScore    {        private byte landLitField;        private byte mathematicsField;        private byte englishField;        /// <remarks/>        public byte LandLit        {            get            {                return this.landLitField;            }            set            {                this.landLitField = value;            }        }        /// <remarks/>        public byte Mathematics        {            get            {                return this.mathematicsField;            }            set            {                this.mathematicsField = value;            }        }        /// <remarks/>        public byte English        {            get            {                return this.englishField;            }            set            {                this.englishField = value;            }        }    }}

但是默认生成的类,在转换成数组时存在问题,所以需要细微调整,如下所示:

namespace DemoCore{    // 注意: 生成的代码可能至少需要 .NET Framework 4.5 或 .NET Core/Standard 2.0。    /// <remarks/>    [System.SerializableAttribute()]    [System.ComponentModel.DesignerCategoryAttribute("code")]    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]    public partial class Student    {        private string nameField;        private byte ageField;        private string sexField;        private LikesLike likesField;        private StudentScore scoreField;        /// <remarks/>        public string Name        {            get            {                return this.nameField;            }            set            {                this.nameField = value;            }        }        /// <remarks/>        public byte Age        {            get            {                return this.ageField;            }            set            {                this.ageField = value;            }        }        /// <remarks/>        public string Sex        {            get            {                return this.sexField;            }            set            {                this.sexField = value;            }        }        /// <remarks/>        [System.Xml.Serialization.XmlArrayItemAttribute("Like", IsNullable = false)]        public LikesLike Likes        {            get            {                return this.likesField;            }            set            {                this.likesField = value;            }        }        /// <remarks/>        public StudentScore Score        {            get            {                return this.scoreField;            }            set            {                this.scoreField = value;            }        }    }    /// <remarks/>    [System.SerializableAttribute()]    [System.ComponentModel.DesignerCategoryAttribute("code")]    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]    public partial class StudentScore    {        private byte landLitField;        private byte mathematicsField;        private byte englishField;        /// <remarks/>        public byte LandLit        {            get            {                return this.landLitField;            }            set            {                this.landLitField = value;            }        }        /// <remarks/>        public byte Mathematics        {            get            {                return this.mathematicsField;            }            set            {                this.mathematicsField = value;            }        }        /// <remarks/>        public byte English        {            get            {                return this.englishField;            }            set            {                this.englishField = value;            }        }    }    public partial class LikesLike {        public string[] Like { get; set; }    }}

然后在读取时,进行整体绑定,如下所示:

 //2. 复杂读取 var student = new Student(); configuration.Bind(student); Console.WriteLine($"name={student.Name},age={student.Age},like= {string.Join(",", student.Likes.Like)},score={student.Score.English}");

5. 示例截图

.NetCore中如何读取配置文件

注意:通过示例方向,读取XML和读取Json文件,存在细微的差异。

读取INI文件

ini文件在C#程序中,一般应用的不是很多,主要是键值对文件,主要用于存储简单的数据格式,如下所示:

1. 创建ini文件

一般情况下,ini文件包括以下几个部分:a. 注释 用分号做前缀,b. 节点用中括号表示,c. key=value表示内容。如下所示:

 ;此处表示注释  [student] Name=Alan.hsiang Age=20 Grade=4

2. 创建配置并读取

在.Net Core中读取ini文件的步骤,非常简单,如下所示:

private static void ReadIni() {    IConfiguration configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory).AddIniFile("student.ini").Build();    string name = configuration["student:Name"];//如果没有节点,则直接用key进行获取即可    var age = configuration.GetValue<int>("student:Age");    var grade = configuration.GetValue<int>("student:Grade");    Console.WriteLine($"name={name},age={age},grade= {string.Join(",", grade)}"); }

注意:由于ini文件不涉及复杂的数据结构,所以直接通过索引器和GetValue即可。

3. 示例截图

读取ini文件的示例截图如下所示:

.NetCore中如何读取配置文件

 读取环境变量

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量相当于给系统或用户应用程序设置的一些参数,具体起什么作用这当然和具体的环境变量相关。

1. 查看环境变量

在win10操作系统中,此电脑-->右键-->属性-->高级系统设置-->环境变量-->然后打开环境变量对话框。如下所示:

.NetCore中如何读取配置文件

环境变量分为用户变量【当前用户】,和系统变量【全部用户】,如下所示:

.NetCore中如何读取配置文件

2. 简单读取 

在.netcore中读取环境变量的值,如下所示:

private static void ReadEnvironmentVariable() {      IConfiguration configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory).AddEnvironmentVariables().Build();       var path = configuration["Path"];       var temp = configuration["TEMP"];       var os = configuration["OS"];       var arr = path.Split(";");       Console.WriteLine("path:");       foreach (var a in arr)       {           Console.WriteLine(a);       }       Console.WriteLine($"temp={temp}\n os= {os}");}

3. 示例截图

读取环境变量示例截图如下所示:

.NetCore中如何读取配置文件

看完了这篇文章,相信你对“.NetCore中如何读取配置文件”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: .NetCore中如何读取配置文件

本文链接: https://www.lsjlt.com/news/324141.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .NetCore中如何读取配置文件
    小编给大家分享一下.NetCore中如何读取配置文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在应用程序开发中,配置文件是主要存储系统的初始配置信息,配置文件的读取虽然属于基础内容却又经常用到,所以百丈高楼平地起,学习...
    99+
    2023-06-29
  • .NETCore读取配置文件
    1. 说明 默认情况下读取配置Configuration的默认优先级:ConfigureAppConfiguration(自定义读取)>CommandLine(命令行参数)&g...
    99+
    2024-04-02
  • .NetCore基础之读取配置文件详解
    目录涉及知识点安装插件读取Json文件1. 准备数据2. 创建IConfiguration接口实例3. 通过索引器进行读取4. 通过GetValue<T>()方法进行读取...
    99+
    2024-04-02
  • C#中如何读取配置文件
    C#中如何读取配置文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#读取配置文件1、读取配置信息下面是一个配置文件的具体内容:   &nb...
    99+
    2023-06-18
  • .NETCore获取配置文件内容
    结合了好几个哥们的写法,最终我使用了这个版本,现在把我这个版本的写出来,如果该版本和您的版本类似或者一样,那可能是借鉴您的 using Microsoft.AspNetCore.Ho...
    99+
    2024-04-02
  • 如何读取Flex配置文件
    这篇文章主要介绍了如何读取Flex配置文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex在运行时如何读取Flex配置文件Flex简介AdobeFlex是为满足希望开发...
    99+
    2023-06-17
  • thinkphp5如何读取配置文件
    本篇内容介绍了“thinkphp5如何读取配置文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在使用ThinkPHP5框架时,我们通常需要...
    99+
    2023-07-05
  • 如何在C#中读取配置文件
    如何在C#中读取配置文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#读取配置文件1.了解配置文件概述:应 用程序配置文件是标准的 XML 文件,XML 标...
    99+
    2023-06-18
  • java如何读取配置文件
    Java中可以使用java.util.Properties类来读取配置文件。Properties类提供了一些方法来读取和操作属性文件...
    99+
    2023-08-08
    java
  • bootstrap.yml如何读取nacos配置中心的配置文件
    目录bootstrap.yml读取nacos配置中心配置文件依赖的版本交由父模块进行版本控制了(另附上依赖代码)父模块的依赖管理总结bootstrap.yml读取nacos配置中心配...
    99+
    2022-12-28
    bootstrap.yml nacos配置中心 nacos配置文件
  • python如何读取ini配置文件
    Python提供了一个标准库`configparser`用于读取和修改INI文件。首先,需要导入`configparser`模块:`...
    99+
    2023-10-08
    python
  • SpringBoot yml配置文件如何读取
    本篇内容主要讲解“SpringBoot yml配置文件如何读取”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot yml配置文件如何读取”吧!yaml介绍YA...
    99+
    2023-07-04
  • 如何使用@PropertySource读取配置文件
    本篇内容主要讲解“如何使用@PropertySource读取配置文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用@PropertySource读取配置文件”吧!@PropertySou...
    99+
    2023-06-29
  • SpringBoot如何读取外部配置文件
    这篇文章将为大家详细讲解有关SpringBoot如何读取外部配置文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.SpringBoot配置文件SpringBoot使用一个以application命名的...
    99+
    2023-06-29
  • Java如何实现读取配置文件
    在Java中,可以使用`java.util.Properties`类来读取配置文件。以下是一个简单的例子:1. 创建一个名为`con...
    99+
    2023-09-28
    Java
  • @Scheduled 如何读取动态配置文件
    @Scheduled读取动态配置文件 application.yml配置文件得配置信息 agreeAccTask: # # 每3分钟执行一次,handTime: 0 0/3 *...
    99+
    2024-04-02
  • ASP.NETCore读取配置文件
    ASP.NET Core 中,可以使用 ConfigurationBuilder 对象来构建。 主要分为三部:配置数据源 -> ConfigurationBuilder -&g...
    99+
    2024-04-02
  • Unity 读取文件 TextAsset读取配置文件方式
    1 支持文件类型 .txt .html .htm .xml .bytes .json .csv .yaml .fnt 2 寻找文件 1 //Load texture from d...
    99+
    2024-04-02
  • Python读取配置文件
    文章目录 Python读取配置文件一、 yaml1、 准备2、 操作数据2.1 读取数据2.2 写入数据 二、 ini1、准备2、 操作数据2.1 读取数据2.2. 写数据 ...
    99+
    2023-09-03
    python 开发语言
  • redis读取配置文件
    redis 读取配置文件的路径位于 /etc/redis/redis.conf 或 /usr/local/etc/redis/redis.conf。它会读取配置文件并逐行解析,将配置选项...
    99+
    2024-04-19
    redis 键值对
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作