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

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日

相关文章

  • MySQL表和列的注释总结

    MySQL表和列的注释总结 在MySQL中,我们可以为表和列添加注释,以便于后续的维护和理解。本文将会详细讲解如何为MySQL表和列添加注释。 给表添加注释 第一种方法 使用CREATE TABLE时,可以在后面加上COMMENT参数,来为表添加注释。 示例: CREATE TABLE `user_info` ( `id` int(11) NOT NULL …

    other 2023年6月25日
    00
  • 手把手教你使用Navicat生成MySQL测试数据

    以下是使用Navicat生成MySQL测试数据的完整攻略: 步骤一:连接数据库 打开Navicat软件,并点击“连接”按钮。 在弹出的连接窗口中,填写数据库连接信息,包括主机名、端口号、用户名和密码等。 点击“连接”按钮,成功连接到MySQL数据库。 步骤二:选择目标数据库 在Navicat左侧的导航栏中,展开已连接的数据库列表。 选择要生成测试数据的目标数…

    other 2023年10月16日
    00
  • Runtime.getRuntime().exec 路径包含空格的解决

    当路径中包含空格时,使用Runtime.getRuntime().exec()方法执行命令可能会失败。这是因为空格被解释为命令参数的分隔符,导致执行命令时无法正确解析路径。要解决这个问题,可以通过一些技巧来处理路径中的空格,下面是具体方法: 方法一:将路径用引号包起来 我们可以将路径用引号包起来,从而避免空格被解释为分隔符。例如,下面的Java代码演示了如何…

    other 2023年6月26日
    00
  • 操作系统是什么?

    操作系统是什么? 操作系统(Operating System,简称OS)是一种系统软件,是计算机硬件和应用程序之间的桥梁,是计算机系统中最基本、最重要的软件之一。操作系统可以管理计算机的硬件(如CPU、内存、硬盘、键盘、鼠标、显示器等),运行应用程序,以及为用户提供操作界面。它也是计算机系统一级软件(firmware)之上的第一层系统软件,其他软件都是建立在…

    其他 2023年4月16日
    00
  • raknet—视频会议系统最佳的数据传输引擎

    RakNet – 视频会议系统最佳的数据传输引擎 RakNet是一个用于游戏和实时应用程序的开源网络库,它提供了可靠的UDP数据传输和网络通信功能。RakNet的特点是高效、可靠、易于使用和可扩展性强。在本文中,我们将介绍如何使用RakNet来构建视频会议系统。 步骤1:安装RakNet 首先,需要从RakNet的官方网站下载最新版本的RakNet。下载完成…

    other 2023年5月8日
    00
  • java反射机制的一些学习心得小结

    下面我将为您详细讲解Java反射机制的学习心得小结。本文将从什么是Java反射、为什么需要反射、反射的使用以及实际应用等几个方面进行讲解。 什么是Java反射 Java反射机制是指在运行时获取类信息、方法信息以及成员变量信息的机制,可以让我们在程序运行时根据需要加载、查找、调用和修改指定类的方法、属性以及构造器等。 为什么需要反射 Java反射机制在开发过程…

    other 2023年6月27日
    00
  • Win10 10102预览版怎么卸载应用程序和添加功能?

    针对Win10 10102预览版的应用卸载和功能添加,我们可以采取如下步骤: 卸载应用程序 打开开始菜单,在“所有应用程序”中找到你要卸载的应用程序,并右键点击它。 在弹出的菜单中选择“卸载”选项,等待程序卸载完成即可。 示例:卸载游戏《自由之战》 右键点击开始菜单中的“自由之战”游戏图标 选择卸载 等待程序卸载完成 如果无法从开始菜单中找到要卸载的程序,请…

    other 2023年6月25日
    00
  • JavaScript寄生组合式继承实例详解

    JavaScript寄生组合式继承实例详解 JavaScript继承有多种方式,其中寄生组合式继承是一种常见的方式。下面将对其进行详细讲解。 什么是寄生组合式继承 在介绍寄生组合式继承之前,我们先简单了解一下构造函数、原型链和继承的概念。 构造函数是一个用来创建对象的函数,我们可以在构造函数中定义对象的属性和方法。 原型链是一种机制,用以实现对象之间的继承关…

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