详解C#如何实现读写ini文件
作者:熊思雨 时间:2022-02-04 23:15:27
介绍
INI文件格式由节、键、值组成。
节
[section]
参数
(键=值)
name=value
1.创建一个ini文件
在Debug目录下创建一个ini文件,写入下面内容,注意编码格式用ANSI。
[Information]
Name=周星星
Gender=男
Age=55
Region=香港
2.创建一个winform界面
如下图
3.添加一个ini管理类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace Test1
{
public static class IniFunc
{
/// <summary>
/// 获取值
/// </summary>
/// <param name="section">段落名</param>
/// <param name="key">键名</param>
/// <param name="defval">读取异常是的缺省值</param>
/// <param name="retval">键名所对应的的值,没有找到返回空值</param>
/// <param name="size">返回值允许的大小</param>
/// <param name="filepath">ini文件的完整路径</param>
/// <returns></returns>
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileString(
string section,
string key,
string defval,
StringBuilder retval,
int size,
string filepath);
/// <summary>
/// 写入
/// </summary>
/// <param name="section">需要写入的段落名</param>
/// <param name="key">需要写入的键名</param>
/// <param name="val">写入值</param>
/// <param name="filepath">ini文件的完整路径</param>
/// <returns></returns>
[DllImport("kernel32.dll")]
private static extern int WritePrivateProfileString(
string section,
string key,
string val,
string filepath);
/// <summary>
/// 获取数据
/// </summary>
/// <param name="section">段落名</param>
/// <param name="key">键名</param>
/// <param name="def">没有找到时返回的默认值</param>
/// <param name="filename">ini文件完整路径</param>
/// <returns></returns>
public static string getString(string section, string key, string def, string filename)
{
StringBuilder sb = new StringBuilder(1024);
GetPrivateProfileString(section, key, def, sb, 1024, filename);
return sb.ToString();
}
/// <summary>
/// 写入数据
/// </summary>
/// <param name="section">段落名</param>
/// <param name="key">键名</param>
/// <param name="val">写入值</param>
/// <param name="filename">ini文件完整路径</param>
public static void writeString(string section, string key, string val, string filename)
{
WritePrivateProfileString(section, key, val, filename);
}
}
}
4.添加winform代码
双击winform界面,加入下面代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string filename = null;
private void Form1_Load(object sender, EventArgs e)
{
filename = Application.StartupPath + "\\Config.ini";
}
/// <summary>
/// 读取
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button_Read_Click(object sender, EventArgs e)
{
string names = IniFunc.getString("Information", "Name", null, filename);
string gender = IniFunc.getString("Information", "Gender", null, filename);
string age = IniFunc.getString("Information", "Age", null, filename);
string region = IniFunc.getString("Information", "Region", null, filename);
TextBox_Name.Text = names;
TextBox_Gender.Text = gender;
TextBox_Age.Text = age;
TextBox_Region.Text = region;
}
/// <summary>
/// 写入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button_Write_Click(object sender, EventArgs e)
{
string names = TextBox_Name.Text;
string gender = TextBox_Gender.Text;
string age = TextBox_Age.Text;
string region = TextBox_Region.Text;
IniFunc.writeString("Information", "Name", names, filename);
IniFunc.writeString("Information", "Gender", gender, filename);
IniFunc.writeString("Information", "Age", age, filename);
IniFunc.writeString("Information", "Region", region, filename);
}
/// <summary>
/// 清空
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button_Clear_Click(object sender, EventArgs e)
{
TextBox_Name.Text = string.Empty;
TextBox_Gender.Text = string.Empty;
TextBox_Age.Text = string.Empty;
TextBox_Region.Text = string.Empty;
}
}
}
来源:https://blog.csdn.net/qq_38693757/article/details/121675847
标签:C#,读写,ini
0
投稿
猜你喜欢
JavaWeb核心技术中Session与Cookie浅析
2023-06-07 20:43:17
jvm虚拟机类加载机制详解
2021-10-21 08:33:28
WPF自定义实现IP地址输入控件
2022-02-24 05:35:36
关于MyBatis模糊查询的几种实现方式
2023-05-09 04:23:12
JAVA格式化时间日期的简单实例
2022-10-06 09:14:58
解决问题:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources
2023-11-23 23:40:39
Java实现常见排序算法的优化
2022-05-20 13:08:37
Spring Cloud Gateway网关XSS过滤方式
2021-08-07 13:16:53
Java使用Jdbc连接Oracle执行简单查询操作示例
2021-07-25 03:34:25
java isInterrupted()判断线程的实例讲解
2023-07-21 01:45:53
Java实现酒店客房管理系统
2023-11-21 06:58:38
基于idea 的 Java中的get/set方法之优雅的写法
2023-11-26 20:22:50
Java实现AOP面向切面编程的实例教程
2023-02-20 19:32:38
浅谈java 增强型的for循环 for each
2023-03-30 18:51:05
mybatis使用foreach查询不出结果也不报错的问题
2023-11-24 22:36:17
Spring自动配置之condition条件判断上篇
2022-07-01 17:34:51
c# Thread类线程常用操作详解
2021-09-20 21:35:51
java读取xml配置参数代码实例
2023-11-25 03:03:17
Java中的this和super实例浅析
2023-03-03 13:24:09
Java 将PPT幻灯片转为HTML文件的实现思路
2022-12-12 12:00:35