2
C#获取ini文件中section节点下全部key的值
source link: https://blog.51cto.com/u_16459851/8925078
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
C#获取ini文件中section节点下全部key的值
精选 原创本文不对ini文件的基本读取、写入key的value方法做详细介绍;仅介绍获取ini文件中section节点下全部key的值的方法;
- ini文件内容
步骤:打开VS软件,新建项目后,在界面添加按钮控件和textbox控件,以便查看效果;
- 添加引用;
using System.Runtime.InteropServices;//添加引用
- 声明API;
/// <summary>
/// 获取某个指定节点(Section)中所有KEY和Value
/// </summary>
/// <param name="lpAppName"></param>
/// <param name="lpszReturnBuffer"></param>
/// <param name="nSize"></param>
/// <param name="lpFileName"></param>
/// <returns></returns>
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileSection(string lpAppName, byte[] lpszReturnBuffer, int nSize, string lpFileName);
- 获取结果后保存到string[]数组中
/// <summary>
/// 获取INI文件中指定节点(Section)中的所有条目(key=value形式)
/// </summary>
/// <param name="iniFile"></param>
/// <param name="section"></param>
/// <returns></returns>
public static string[] INIGetAllItems2(string iniFile, string section)
{
byte[] buffer = new byte[2048];
GetPrivateProfileSection(section, buffer, 2048, iniFile);
String[] tmp = Encoding.Default.GetString(buffer).Trim('\0').Split('\0');
return tmp;
}
- 获取结果后保存到字典
public static Dictionary<string, string> GetKeys(string iniFile, string category)
{
//获取INI文件中指定节点(Section)中的所有条目(key=value形式)
string[] tmp = INIGetAllItems2(iniFile, category);
//也可将数组转变成字典
Dictionary<string, string> result = new Dictionary<string, string>();
if (tmp[0] != "")
{
foreach (String entry in tmp)
{
string[] v = entry.Split('=');
result.Add(v[0], v[1]);
}
}
return result;
}
- 通过按钮调用方法;可以使用string[]数组保存数据,也可使用字典保存数据;本文演示字典保存数据的方法;
private void button1_Click(object sender, EventArgs e)
{
Dictionary<string, string> keyValues = new Dictionary<string, string>();
string iniFile = "D:\\Test.ini";
keyValues= GetKeys(iniFile, "Config");
//遍历键值对
foreach (var keyvalue in keyValues)
{
textBox1.AppendText(string.Format("键值对:{0},{1},{2}", keyvalue.Key.ToString(), keyvalue.Value.ToString(),"\r\n"));
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;//添加引用
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
#region API声明
/// <summary>
/// 获取某个指定节点(Section)中所有KEY和Value
/// </summary>
/// <param name="lpAppName"></param>
/// <param name="lpszReturnBuffer"></param>
/// <param name="nSize"></param>
/// <param name="lpFileName"></param>
/// <returns></returns>
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileSection(string lpAppName, byte[] lpszReturnBuffer, int nSize, string lpFileName);
#endregion
/// <summary>
/// 获取INI文件中指定节点(Section)中的所有条目(key=value形式)
/// </summary>
/// <param name="iniFile"></param>
/// <param name="section"></param>
/// <returns></returns>
public static string[] INIGetAllItems2(string iniFile, string section)
{
byte[] buffer = new byte[2048];
GetPrivateProfileSection(section, buffer, 2048, iniFile);
String[] tmp = Encoding.Default.GetString(buffer).Trim('\0').Split('\0');
return tmp;
}
public static Dictionary<string, string> GetKeys(string iniFile, string category)
{
//获取INI文件中指定节点(Section)中的所有条目(key=value形式)
string[] tmp = INIGetAllItems2(iniFile, category);
//也可将数组转变成字典
Dictionary<string, string> result = new Dictionary<string, string>();
if (tmp[0] != "")
{
foreach (String entry in tmp)
{
string[] v = entry.Split('=');
result.Add(v[0], v[1]);
}
}
return result;
}
private void button1_Click(object sender, EventArgs e)
{
Dictionary<string, string> keyValues = new Dictionary<string, string>();
string iniFile = "D:\\Test.ini";
keyValues= GetKeys(iniFile, "Config");
//遍历键值对
foreach (var keyvalue in keyValues)
{
textBox1.AppendText(string.Format("键值对:{0},{1},{2}", keyvalue.Key.ToString(), keyvalue.Value.ToString(),"\r\n"));
}
}
}
}
- 赞
- 收藏
- 评论
- 分享
- 举报
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK