### WPF 中读写 INI 文件的方法
在 WPF 应用程序中,可以通过调用 Windows API 函数 `WritePrivateProfileString` 和 `GetPrivateProfileString` 来实现对 INI 文件的读取和写入操作。以下是具体的代码示例:
#### 写入 INI 文件
通过调用 `WritePrivateProfileString` 方法可以向指定的 INI 文件写入数据。
```csharp
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
private static extern int WritePrivateProfileString(string section, string key, string val, string filePath);
public static void WriteIniFile(string section, string key, string value, string filePath)
{
WritePrivateProfileString(section, key, value, filePath);
}
```
此方法会根据传入的参数,在指定的 INI 文件中创建或更新对应节(Section)、键(Key)以及其值[^1]。
#### 读取 INI 文件
为了从 INI 文件中获取特定的数据,可以使用 `GetPrivateProfileString` 方法。
```csharp
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
private static extern int GetPrivateProfileString(string section, string key, string defaultValue, StringBuilder retVal, int size, string filePath);
public static string ReadIniFile(string section, string key, string defaultValue, string filePath)
{
StringBuilder result = new StringBuilder(255);
GetPrivateProfileString(section, key, defaultValue, result, 255, filePath);
return result.ToString();
}
```
这段代码定义了一个静态方法来读取 INI 文件中的某个键值,并返回相应的字符串结果。如果没有找到对应的键,则返回默认值[^1]。
#### 使用示例
下面是一个完整的例子,演示如何在一个 WPF 应用程序中使用这些功能。
```csharp
using System;
using System.Text;
namespace IniFileExample
{
public class IniFileManager
{
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
private static extern int WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
private static extern int GetPrivateProfileString(string section, string key, string defaultValue, StringBuilder retVal, int size, string filePath);
public static void WriteToIni(string section, string key, string value, string filePath)
{
WritePrivateProfileString(section, key, value, filePath);
}
public static string ReadFromIni(string section, string key, string defaultValue, string filePath)
{
StringBuilder result = new StringBuilder(255);
GetPrivateProfileString(section, key, defaultValue, result, 255, filePath);
return result.ToString();
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
string iniFilePath = "config.ini";
// 写入配置
IniFileManager.WriteToIni("WindowSettings", "Width", "800", iniFilePath);
IniFileManager.WriteToIni("WindowSettings", "Height", "600", iniFilePath);
// 读取配置
string width = IniFileManager.ReadFromIni("WindowSettings", "Width", "DefaultWidth", iniFilePath);
string height = IniFileManager.ReadFromIni("WindowSettings", "Height", "DefaultHeight", iniFilePath);
Console.WriteLine($"Width: {width}, Height: {height}");
}
}
}
```
以上代码展示了如何在 WPF 应用程序初始化阶段保存窗口大小到 INI 文件,并从中加载之前存储的尺寸信息[^1]。
---
###