在 C# 中读取和写入 INI 文件
本教程教授如何在 C# 中读取和写入 INI
文件。
C#
中的 INI
文件是什么
初始化文件,通常称为 INI
文件,是用于存储程序配置信息的文本文件。 .NET 框架本身不支持 INI
文件。
你可以利用 Windows API 方法使用平台调用服务来写入和读取文件。本教程将构建一个表示 INI
文件的类,并使用 Windows API 操作来操作它们。
要使用 INI
文件,我们需要两个 Windows API 函数,WritePrivateProfileString
和 ReadPrivateProfileString
。
在 C#
中使用 WritePrivateProfileString
来保存 INI 文件中新的和修改的设置
在 INI
文件中,WritePrivateProfileString
保存新的和修改的设置。结构如下。
bool WritePrivateProfileString(string name, string key, string value, string filepath);
如果写入成功,则该函数返回布尔结果,如果写入失败,则返回 false。以下是参数。
-
要写入的部分名称由
name
指定。 -
要设置的键名由
key
指定。 -
键的值由
value
指定。 -
filepath
保存要更新的INI
文件的位置。
在 C#
中使用 ReadPrivateProfileString
从一个 INI 文件中读取数据
ReadPrivateProfileString
从 INI
文件中读取数据。该函数根据其应用程序读取单个值、节中的所有键名或所有部分的名称。
int GetPrivateProfileString(string name, string key, string default, StringBuilder ReturnedVal,
int maxsize, string filepath);
函数将返回值中的字符数作为无符号整数返回。以下是参数。
-
要读取的部分名称由
name
指定。如果将其设置为 null,则将返回所有部分名称。 -
要读取的键名由
key
指定。如果设置为 null 而name
不为 null,则返回的值将包括给定部分中键的名称。 -
如果键不存在,
default
指定要返回的默认值。 -
ReturnedVal
接收用作缓冲区的字符串。操作的结果被写入缓冲区,修改字符串的值。 -
ReturnedVal
中将返回的字符串的最大大小由maxsize
指定。这应该与缓冲区大小相同。如果从INI
文件中读取的值比ReturnedVal
长,它将被减少。 -
要读取的
INI
文件的位置和名称由filepath
指定。该文件必须存在。
在 C#
中读取和写入 INI
文件
让我们创建一个类来保存我们将使用的 Windows API 函数的结构,因为我们已经看到了它们的结构。
添加以下库。
using System;
using System.IO;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Text;
创建一个名为 ReadWriteINIfile
的新类并使用以下类代码。因为类本身没有访问修饰符,所以它会有一个内部作用域。
IniFile
类将访问 API 函数而不将它们暴露给公众。
public class ReadWriteINIfile {
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string name, string key, string val,
string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def,
StringBuilder retVal, int size,
string filePath);
}
我们现在可以构造 ReadWriteINIfile
类,允许我们在不知道 API 操作的情况下读取 INI
文件。
将以下代码添加到类以创建构造函数。
public ReadWriteINIfile(string inipath) {
path = inipath;
}
WritePrivateProfileString
用于用值填充 INI
文件。下面的代码中使用了三个参数来接受节和键名以及要保存的值。
在对 WritePrivateProfileString
的调用中,这些值与传递给构造函数的文件名组合在一起。
public void WriteINI(string name, string key, string value) {
WritePrivateProfileString(name, key, value, this.path);
}
ReadINI
的参数是要读取的 name
和 key
。上面代码的第一行定义了字符串并将其值设置为几个等于其最大长度的空格。
GetPrivateProfileString
函数接收此字符串作为要填充的缓冲区。使用下面的代码。
public string ReadINI(string name, string key) {
StringBuilder sb = new StringBuilder(255);
int ini = GetPrivateProfileString(name, key, "", sb, 255, this.path);
return sb.ToString();
}
完整源代码:
using System;
using System.IO;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Text;
namespace Test {
class Program {
static void Main(string[] args) {}
}
public class ReadWriteINIfile {
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string name, string key, string val,
string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def,
StringBuilder retVal, int size,
string filePath);
public string path;
public ReadWriteINIfile(string inipath) {
path = inipath;
}
public void WriteINI(string name, string key, string value) {
WritePrivateProfileString(name, key, value, this.path);
}
public string ReadINI(string name, string key) {
StringBuilder sb = new StringBuilder(255);
int ini = GetPrivateProfileString(name, key, "", sb, 255, this.path);
return sb.ToString();
}
}
}
相关文章
在 C# 中将 List<string>转换为字符串
发布时间:2024/03/16 浏览次数:198 分类:编程语言
-
在 C# 中,有两种主要方法可用于将 List
转换为字符串变量,Linq 方法和 String.Join()函数。
在 C# 中将 List<string>转换为字符串
发布时间:2024/03/16 浏览次数:171 分类:编程语言
-
在 C# 中,有两种主要方法可用于将 List
转换为字符串变量,Linq 方法和 String.Join()函数。
在 C# 中将 List<string>转换为字符串
发布时间:2024/03/16 浏览次数:187 分类:编程语言
-
在 C# 中,有两种主要方法可用于将 List
转换为字符串变量,Linq 方法和 String.Join()函数。
在 C# 中发出 HTTP POST Web 请求
发布时间:2024/02/04 浏览次数:131 分类:编程语言
-
在 C# 中,可以使用 3 种主要方法来发出 HTTP POST Web 请求:WebClient 类,HttpWebRequest 类和 HttpClient 类。本教程将讨论在 C# 中发出 HTTP POST Web 请求的方法。使用 C# 中的 WebClient 类发出 HTTP POST Web 请求
在 C# 中运行命令提示符命令
发布时间:2024/02/04 浏览次数:130 分类:编程语言
-
Process 类可用于在 C# 中运行命令提示符命令。在 C# 中使用 Process.Start() 函数运行命令提示符命令
在 C# 中调整图像大小
发布时间:2024/02/04 浏览次数:203 分类:编程语言
-
有两种主要方法可用于在 C# 中调整图像的大小,Bitmap 类构造函数和 graphics.DrawImage()函数。在本教程中,我们将讨论在C#中调整图像大小的方法。我们将带您完成整个过程,从加载原始图像到保
在 C# 中下载图片
发布时间:2024/02/04 浏览次数:138 分类:编程语言
-
有 3 种主要方法可用于下载 C# 中的图片,WebClient.DownloadFile()函数,Bitmap 类和 Image.FromStream()函数。在 C# 中使用 WebClient 类下载图片 WebClient 类提供了用于向 C# 中的 URL 发送数据和从 URL 接收数据
在 C# 中使用秒表
发布时间:2024/02/04 浏览次数:139 分类:编程语言
-
我们可以使用 Stopwatch 类来计算 C# 中的经过时间。使用 C# 中的秒表类计算经过时间 Stopwatch 类在 C# 中准确测量经过的时间。
在 C# 中获取可执行路径
发布时间:2024/02/04 浏览次数:200 分类:编程语言
-
有 3 种主要方法可用于获取 C# 中程序的可执行路径,即 Assembly 类,AppDomain 类和 Path 类。本教程将介绍获取 C# 代码的可执行路径的方法。使用 C# 中的 Assembly 类获取可执行路径