C#读写配置文件方式(config.ini)入门

Pascall ·
更新时间:2024-09-20
· 1104 次阅读

目录

C#读写配置文件(config.ini)

代码部分

配置文件(config.ini) 部分

winform部分

C#使用App.config和INI两种方式读写配置文件

说明

使用App.config

使用INI文件

总结

C#读写配置文件(config.ini)

最近学习C#,遇到要读取配置文件的问题,记录下学习过程

代码部分 namespace 写入读取配置文件 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /* * 1)private 不是必需的,根据设计了,public也可以. * 2)extern 关键字表示该方法是要调用非托管代码.如果使用extern关键字来引入非托管代码,则必须也同时使用static.为什么要用static,是因为你调用非托管代码,总得有个入口点吧,那么你声明的这个GetPrivateProfileString方法就是你要调用的非托管代码的入口.想想Main函数,是不是也必须是static呢. * 3) 为什么要用long,我看也有小伙伴也有用int的,估计是long支持的更多位数 */ [DllImport("kernel32")]// 读配置文件方法的6个参数:所在的分区(section)、 键值、 初始缺省值、 StringBuilder、 参数长度上限 、配置文件路径 public static extern long GetPrivateProfileString(string section, string key, string defaultValue, StringBuilder retVal, int size, string filePath); [DllImport("kernel32")]//写入配置文件方法的4个参数: 所在的分区(section)、 键值、 参数值、 配置文件路径 private static extern long WritePrivateProfileString(string section, string key, string value, string filePath); /*读配置文件*/ public static string GetValue(string section, string key) { // ▼ 获取当前程序启动目录 // string strPath = Application.StartupPath + @"/config.ini"; 这里是绝对路径 string strPath = "./config.ini"; //这里是相对路径 if (File.Exists(strPath)) //检查是否有配置文件,并且配置文件内是否有相关数据。 { StringBuilder sb = new StringBuilder(255); GetPrivateProfileString(section, key, "配置文件不存在,读取未成功!", sb, 255, strPath); return sb.ToString(); } else { return string.Empty; } } /*写配置文件*/ public static void SetValue(string section, string key, string value) { // ▼ 获取当前程序启动目录 // string strPath = Application.StartupPath + @"/config.ini"; 这里是绝对路径 string strPath = "./config.ini"; //这里是相对路径, WritePrivateProfileString(section, key, value, strPath); } private void button1_Click_1(object sender, EventArgs e) { richTextBox1.Text = GetValue("参数", "波特率"); //这里通过界面的按钮,读取配置文件。 } private void richTextBox1_TextChanged(object sender, EventArgs e)//当winform界面的数据更改时,自动保存到配置文件,以便下次打开时保持最后更改的数据 { SetValue("参数", "波特率",this.richTextBox1.Text.ToString()); } private void Form1_Load(object sender, EventArgs e)//程序开始自动读取上一次配置后的文件 { richTextBox1.Text = GetValue("参数", "波特率"); //这里通过界面的按钮,读取配置文件。 } } } 配置文件(config.ini) 部分

winform部分

第一次启动如下图所示,点击按钮没有任何数据,需要先写入,如10,程序自动将10存入配置文件中。

关闭程序,再打开,文本框就有10了。

C#使用App.config和INI两种方式读写配置文件 说明

将系统参数写到配置文件中,可避免修改参数必须重新打包程序问题。

c#操作配置文件有几种方法,下面分别介绍使用App.config和INI文件方式管理。

使用App.config

注意:

程序编译后App.config会编译为“项目名.exe.config”文件。

程序中需要添加引用System.Configuration。

App.config可读写数据库连接参数和用户自定义参数。

读配置信息

App.config文件

<connectionStrings>     <add name="dbConnectionString" connectionString="Data Source=10.0.1.11;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=xxx;Max Pool Size=512" providerName="System.Data.SqlClient"/> </connectionStrings> <appSettings>     <add key="abc" value="welcome"/> </appSettings>

读数据库配置信息

SqlConnection con = new SqlConnection(); con.ConnectionString = ConfigurationManager.ConnectionStrings["dbConnectionString"].ConnectionString;

读自定义信息

String str = ConfigurationManager.AppSettings["abc"];

写配置信息

写配置信息要用到OpenExeConfiguration。

//获取可操作的Configuration对象 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  //写入<add>元素的Value  config.AppSettings.Settings["abc"].Value = "hello";  //保存  config.Save();  //刷新  ConfigurationManager.RefreshSection("appSettings"); 使用INI文件

优点为配置文件可以指定路径,配置信息格式简单,使用系统库文件即可操作ini文件。

系统方法类

public class IniService     {       //引入系统库文件       [DllImport("kernel32")]       private static extern long WritePrivateProfileString(string section, 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);       [DllImport("kernel32.dll")]       private extern static int WritePrivateProfileSectionA(string segName, string sValue, string fileName); public string iniPath;       /// <summary>       /// 构造方法       /// </summary>       /// <param name="INIPath">文件路径</param>       public IniService(string INIPath)       {           iniPath = INIPath;       }       /// <summary>       /// 写入INI文件       /// </summary>       /// <param name="Section">项目名称(如 [TypeName] )</param>       /// <param name="Key">键</param>       /// <param name="Value">值</param>       public void IniWriteValue(string Section, string Key, string Value)       {           WritePrivateProfileString(Section, Key, Value, this.iniPath);       }       /// <summary>       /// 读出INI文件       /// </summary>       /// <param name="Section">项目名称(如 [TypeName] )</param>       /// <param name="Key">键</param>       public string IniReadValue(string Section, string Key)       {           StringBuilder temp = new StringBuilder(500);           int i = GetPrivateProfileString(Section, Key, "", temp, 500, this.iniPath);           return temp.ToString();       }       /// <summary>       /// 删除指定的节的所有内容       /// </summary>       /// <param name="Section">要删除的节的名字</param>       public void DeleteSection(string Section)       {           WritePrivateProfileSectionA(Section, null, this.iniPath);       }       /// <summary>       /// 验证文件是否存在       /// </summary>       /// <returns>布尔值</returns>       public bool isExistINIFile()       {           return File.Exists(iniPath);       }   }

测试

使用时需要指定ini文件位置,测试程序在工程中新建config文件夹,创建System.ini文件,并且右键属性中设置“如果较新则复制”。

            //获取程序路径             string stCurrentPath = AppDomain.CurrentDomain.BaseDirectory;             if (!stCurrentPath.Substring(stCurrentPath.Length - 1).Equals(@"\"))             {                 stCurrentPath = stCurrentPath + @"\";             }             //初始化IniService            IniService ini = new IniService(stCurrentPath + "config\\System.ini");            //写入System.ini             ini.IniWriteValue("Sys", "Msg","Welcome");             //读数据             string strInterval = ini.IniReadValue("Sys", "Msg");

配置文件

System.ini

[Sys]
Msg=Welcome

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。



ini C# 配置文件 config

需要 登录 后方可回复, 如果你还没有账号请 注册新账号