当前位置: 首页 > article >正文

C# 读写ini文件

一、概述

.ini 文件是Initialization File的缩写,即初始化文件,是 windows 的系统配置文件所采用的存储格式,统管 windows 的各项配置,一般用户就用 windows 提供的各项图形化管理界面就可实现相同的配置了。但在某些情况,还是要直接编辑 .ini 才方便,一般只有很熟悉 windows 才能去直接编辑。开始时用于 Win3.X下面,Win95 用注册表代替,以及后面的内容表示一个节,相当于注册表中的键。
除了 windows2003 很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。

二、基本用法

如果你需要在项目中使用 ini 文件,通常是要自己创建的,目前 ini 文件的作用,类似于配置文件,只是格式不同,但是在目前为止,使用 ini 文件作为配置文件用的人不多,因此也不是特别推荐使用 ini 作为配置文件,比如在 Winform 开发中,使用默认的 App.config 就可以了。

用法:

新建一个 Winform 项目,界面如下:

界面,控件等不一定和我的一样,这里只是演示,重点是读取 ini 文件的数据。

界面创建完成后,点击生成,我们找到 Debug 目录,在 Debug 目录下创建一个ini文件,文件名为config.ini,在 config.ini 中加入下面内容,注意编码格式用 ANSI。

[Information]
Name=周星星
Gender=男
Age=55
Region=香港

新建一个类 IniFunc,加入下面代码

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);}}
}

双击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;}}
}

运行后,点击读取,就可以读取到 ini 中的数据了,修改输入框后,点击写入,也能将数据写入 ini 文件中。

结束

如果这个帖子对你有用,欢迎关注 + 点赞 + 留言,谢谢

end

http://www.lryc.cn/news/2416993.html

相关文章:

  • SSH服务远程访问及控制
  • ij工具的基础操作
  • DecimalFormat用法
  • GCC下载地址(linux/windows\安装)或从minGW中取得gcc
  • JSF 原理简要介绍
  • 802.11ac/ax (wifi6)中的Beamforming技术介绍
  • ERP系统之sap入门操作--sap的基本的了解入门
  • 港片怀旧:《鹰爪铁布衫》(1)
  • Linux环境如何下载文件
  • VRP基础
  • DNS是什么,有什么用(详细介绍版)
  • 【数模】多元线性回归分析
  • 单片机和sbit和sfr
  • 常用软件过程——RUP
  • TreeSet的使用方法总结、实现原理、使用示例
  • 语法制导的翻译总结
  • Aircrack-ng组件详解
  • 安卓屏幕分辨率及UI尺寸详解
  • 服务器配置篇 ━━ iis7配置php出现fastcgi的500错误,LocalSystem/LocalService/NetworkService/ApplicationPoolIdentity
  • 【UEFI实战】FSP简介
  • 并发——ScheduledThreadPoolExecutor 详解
  • 逻辑回归(Logistic)
  • 学习Qss--Qss的特性
  • 高并发下System.currentTimeMillis()性能问题及优化方案
  • 串口(SerialPort)的使用
  • 常用正交表(正交法编写测试用例)
  • Redis——持久化之RDB
  • rhapsody软件_Rhapsody集成引擎之日志篇(一)
  • 撞库及其危害性
  • log4net的使用步骤