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技术站