C#实现读写ini配置文件的方法详解

yizhihongxing

C#实现读写ini配置文件的方法详解

注意: 本篇攻略的实现方法适用于.NET Framework 2.0及以上版本。

什么是ini配置文件?

ini配置文件是一种用来保存程序配置信息的文件,它通常以.ini为后缀名,并且采用了键值对的方式来存储数据。在Windows中,ini配置文件被广泛应用于系统启动项、应用程序配置项等方面。

实现读取ini配置文件

要想读取ini配置文件,我们首先需要明确文件的读取路径。假设我们的ini文件与我们的exe文件在同一个文件夹下,并且我们将这个ini文件命名为config.ini,则它的读取路径为:

string path = System.AppDomain.CurrentDomain.BaseDirectory + "config.ini";

有了读取路径之后,我们就可以使用System.IO命名空间下的StreamReader类来读取ini配置文件了。具体实现代码如下:

using System.IO;

string path = System.AppDomain.CurrentDomain.BaseDirectory + "config.ini";
StreamReader sr = new StreamReader(path, Encoding.Default);

while (!sr.EndOfStream) 
{
    string line = sr.ReadLine();
    //对每一行进行处理
    //...
}

sr.Close();

在这段代码中,我们使用StreamReader的ReadLine方法逐行读取ini文件,然后对每一行进行处理。

实现写入ini配置文件

要想写入ini配置文件,我们同样需要明确文件的写入路径。与读取文件不同,我们的写入文件可能不存在,所以我们需要进行判断,并在文件不存在时新建一个文件。具体实现代码如下:

using System.IO;

string path = System.AppDomain.CurrentDomain.BaseDirectory + "config.ini";
StreamWriter sw;
if (File.Exists(path)) 
{
    sw = new StreamWriter(path, false, Encoding.Default);
} 
else 
{
    sw = File.CreateText(path);
}

//通过sw.WriteLine()方法写入配置项
//...

sw.Flush();
sw.Close();

在这段代码中,我们使用StreamWriter类对ini文件进行写入。在判断文件是否存在后,我们将StreamWriter初始化,并传递false参数表示不追加到文件,然后通过WriteLine()方法进行写入,最后通过Flush()和Close()方法关闭StreamWriter。

示例说明

示例1:读取ini文件中的配置项

我们假设我们的config.ini文件中有如下内容:

[App]
Name=My Application
Version=1.0.0
[Database]
Host=127.0.0.1
Port=3306

我们需要读取其中 [App] 节点下的 Name 和 Version 属性,以及 [Database] 节点下的 Host 和 Port 属性。具体实现代码如下:

using System.IO;

string path = System.AppDomain.CurrentDomain.BaseDirectory + "config.ini";
StreamReader sr = new StreamReader(path, Encoding.Default);
string section = "";
while (!sr.EndOfStream) 
{
    string line = sr.ReadLine();
    if (line.StartsWith("[") && line.EndsWith("]")) 
    {
        section = line.Substring(1, line.Length - 2);
    } 
    else if (section == "App" && line.Contains("=")) 
    {
        string[] kv = line.Split('=');
        string key = kv[0].Trim();
        string value = kv[1].Trim();
        if (key == "Name") 
        {
            Console.WriteLine("Application Name: " + value);
        }
        else if (key == "Version") 
        {
            Console.WriteLine("Application Version: " + value);
        }
    } 
    else if (section == "Database" && line.Contains("=")) 
    {
        string[] kv = line.Split('=');
        string key = kv[0].Trim();
        string value = kv[1].Trim();
        if (key == "Host") 
        {
            Console.WriteLine("Database Host: " + value);
        }
        else if (key == "Port") 
        {
            Console.WriteLine("Database Port: " + value);
        }
    }
}

sr.Close();

在这段代码中,我们通过section变量记录当前处理的节点,当行以"["开头并以"]"结尾时,将节点名赋值给section,用于后续处理。当当前处理的节点为[App]时,我们通过判断键值对的key是否为Name或Version,从而输出对应的属性值。当当前处理的节点为[Database]时,我们同样通过判断键值对的key输出对应的属性值。

示例2:写入ini文件中的配置项

我们假设我们需要将配置项写入ini文件中。在示例1中,我们已经将[App]节点和[Database]节点的配置项读取出来了。现在我们将它们写入到config.ini文件的最后。具体实现代码如下:

using System.IO;

string path = System.AppDomain.CurrentDomain.BaseDirectory + "config.ini";
StreamWriter sw;
if (File.Exists(path)) 
{
    sw = new StreamWriter(path, true, Encoding.Default);
} 
else 
{
    sw = File.CreateText(path);
}

sw.WriteLine("[App]");
sw.WriteLine("Name=My Application");
sw.WriteLine("Version=1.0.0");
sw.WriteLine("");
sw.WriteLine("[Database]");
sw.WriteLine("Host=127.0.0.1");
sw.WriteLine("Port=3306");
sw.Flush();
sw.Close();

在这段代码中,我们在最后通过StreamWriter的WriteLine()方法将配置项一一写入。最后通过Flush()和Close()方法关闭StreamWriter。

总结

通过上述代码实现,我们可以非常方便地读取和写入ini配置文件。在实际应用中,ini文件也可以用于存储程序的默认设置,方便用户进行自定义的设定。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现读写ini配置文件的方法详解 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • model将int转换为string

    在机器学习中,经常需要将整数类型的数据转换为字符串类型,以便进行后续的处理和分析。以下是将int类型转换为string类型的完整攻略包括两个示例说明。 步骤1:使用ToString()方法将int转换为string 在C#中,可以使用ToString()方法将int类型转换为string类型。以下是一个示例代码: int num = 123; string …

    other 2023年5月6日
    00
  • 为eclipseee(汉化版)配置tomcat服务器

    以下是关于“为Eclipse(汉化版)配置Tomcat服务器”的完整攻略: Eclipse简介 Eclipse是一款开源的集成开发环境(IDE),可以用开发Java、C++、Python多种编程语言。Eclipse支持多种件,可以通过插件扩展来实现多的功能。 Tomcat简介 Tomcat一款开源的Web服务器和Servlet容器,可以用运行Java Web…

    other 2023年5月9日
    00
  • Element中el-input密码输入框浏览器自动填充账号密码问题的解决方法

    当使用Element的<el-input>组件创建密码输入框时,会遇到浏览器自动填充账号密码的问题。这个问题可能会影响页面的安全性,同时给用户带来不便。本文将详细讲解如何解决这个问题。 问题的产生 浏览器在填充表单的时候,会检测该表单是否具有自动填充的特性。在密码输入框中,如果同时存在一个隐藏的<input>元素,并且该元素的名称为u…

    other 2023年6月27日
    00
  • JAVA基础之注解与反射的使用方法和场景

    JAVA基础之注解与反射的使用方法和场景 1. 注解(Annotation)的概述 注解是一种用于为程序元素(类、方法、字段等)添加元数据的方式。它们提供了一种在代码中添加补充信息的简洁且灵活的方式。在Java中,注解以@符号开头,可以用于提供编译时的信息、运行时的行为以及生成文档等。 2. 注解的使用方法 2.1 定义注解 在Java中,我们可以使用@in…

    other 2023年8月6日
    00
  • 微软Excel如何自定义菜单和工具栏

    自定义菜单和工具栏使得用户可以快速访问常用的Excel功能和命令,提高工作效率。下面是自定义菜单和工具栏的详细步骤: 步骤1:打开“自定义工具栏和菜单”窗口 在Excel的工具菜单栏中选择“自定义工具栏和菜单”,或者使用快捷键“Alt+T, O”打开“自定义工具栏和菜单”窗口。 步骤2:新建自定义菜单或工具栏 在“自定义工具栏和菜单”窗口中选择“新建自定义菜…

    other 2023年6月25日
    00
  • javascript获取数组最后一个元素(三种方法)

    JavaScript获取数组最后一个元素(三种方法) 在JavaScript中,我们经常需要获取数组的最后一个元素。本篇文章将介绍三种JavaScript获取数组最后一个元素的方法,希望能够帮助读者更好地理解和应用JavaScript。 方法一:使用数组的length属性 我们可以使用数组的length属性来获取数组的长度,然后通过索引获取最后一个元素。由于…

    其他 2023年3月28日
    00
  • Android实现类似于PC中的右键弹出菜单效果

    实现类似于PC中右键弹出菜单的效果,需要借助于Android中的PopupMenu类。以下是具体步骤: 1. 创建PopupMenu 首先需要在你的布局文件中添加一个按钮,当用户长按按钮时,就可以弹出菜单。在按钮的长按监听事件中,创建PopupMenu对象,并将其与布局文件中定义的菜单布局文件进行关联。示例如下: <Button android:id=…

    other 2023年6月27日
    00
  • mpvueecharts

    mpvueecharts mpvueecharts是一个基于mpvue和echarts的小程序图表组件库,它可以帮助开发者快速地在小程序中集成echarts图表。 安装 您可以使用npm装mpvueecharts: npm install mpvueecharts –save 使用 以下是使用mpvuearts的步骤: 在需要图表的页面中引入mpvueec…

    other 2023年5月6日
    00
合作推广
合作推广
分享本页
返回顶部