C#对INI文件进行读写操作的示例代码

 更新时间:2024年02月01日 17:15:06   作者:lingxiao16888  
这篇文章主要为大家详细介绍了C#对INI文件进行读写操作的相关知识,文中的示例代码讲解详细,具有一定的学习价值,有需要的小伙伴可以参考一下

1.通过调用API函数完成对INI文件的读取,修改,写入操作

 string filePath;
        private void btnModify_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(filePath) || !File.Exists(filePath))
            {
                using (SaveFileDialog sfd=new SaveFileDialog())
                {                    
                    sfd.Filter= "初始化文件(*.INI)|*.INI";
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        FileStream fs = System.IO.File.Create(sfd.FileName);
                        fs.Dispose();
                        filePath = sfd.FileName;
                    }
                }
            }
            INIHelper.WriteToINI(filePath, "ConnectString", "Data Source", txtServer.Text);
            INIHelper.WriteToINI(filePath, "ConnectString", "DataBase", txtDataBase.Text);
            INIHelper.WriteToINI(filePath, "ConnectString", "Uid", txtSid.Text);
            INIHelper.WriteToINI(filePath, "ConnectString", "Pwd", txtPwd.Text);
            MessageBox.Show("保存成功!");
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            using(OpenFileDialog ofd=new OpenFileDialog())
            {
                ofd.Filter = "初始化文件(*.INI)|*.INI";
                ofd.Multiselect = false;
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                     filePath = ofd.FileName;
                    string source = INIHelper.ReadFromINI(filePath, "ConnectString", "Data Source");
                    string dataName= INIHelper.ReadFromINI(filePath, "ConnectString", "DataBase");
                    string uid= INIHelper.ReadFromINI(filePath, "ConnectString", "Uid", "未设置");
                    string pwd= INIHelper.ReadFromINI(filePath, "ConnectString", "Pwd","未设置");
                    txtServer.Text = source;
                    txtDataBase.Text = dataName;
                    txtSid.Text = uid;
                    txtPwd.Text = pwd;
                }
            }
        }
    }
    /// <summary>
    /// 对INI文件进行读写
    /// </summary>
    class INIHelper
    {
        /// <summary>
        /// 从INI文件中读取数据
        /// </summary>
        /// <param name="filePath">INI文件的全路径</param>
        /// <param name="rootValue">根节点值,例如根节点[ConnectString]的值为:ConnectString</param>
        /// <param name="key">根节点下的键</param>
        /// <param name="defValue">当标记值未设定或不存在时的默认值</param>
        /// <returns></returns>
        public static string ReadFromINI(string filePath, string rootValue,string key,string defValue="")
        {
            StringBuilder sb = new StringBuilder(1024);
            GetPrivateProfileString(rootValue, key, defValue, sb, 1024, filePath);
            return sb.ToString();
        }
        public static void WriteToINI(string filePath, string rootValue, string key, string newVal)
        {
           
            WritePrivateProfileString(rootValue, key, newVal, filePath);
           
        }
        
        /// <summary>
        /// 对INI文件进行读取操作
        /// </summary>
        /// <param name="IpAppName">表示INI文件内部根节点的值</param>
        /// <param name="IpKeyName">表示根节点下子标记的值</param>
        /// <param name="IpDefault">表示当标记值未设定或不存在时的默认值</param>
        /// <param name="IpReturnString">返回读取节点的值</param>
        /// <param name="nSize">读取的节点内容的最大容量</param>
        /// <param name="IpFileName">文件的全路径</param>
        /// <returns></returns>
        [System.Runtime.InteropServices.DllImport("kernel32")]
        static extern int GetPrivateProfileString(string IpAppName, string IpKeyName, string IpDefault, StringBuilder IpReturnString, int nSize, string IpFileName);
        /// <summary>
        /// 对INI文件进行写入操作
        /// </summary>
        /// <param name="mpAppName">INI文件内部根节点的值</param>
        /// <param name="mpKeyName">将要修改的标记名称</param>
        /// <param name="mpDefault">想要修改的内容</param>
        /// <param name="mpFileName">INI文件的全路径</param>
        /// <returns></returns>
        [System.Runtime.InteropServices.DllImport("kernel32")]
        static extern long WritePrivateProfileString(string mpAppName, string mpKeyName, string mpDefault, string mpFileName);
    }

2,INI文件的扩展名为.ini 例如:System.ini 。

3,INI文件格式如下(使用记事本打开):

[ConnectString]
Data Source=192.168.1.97
DataBase=master
Uid=sa
Pwd=1

注解:

[ConnectString] :根节点,进行读写时首先需要知晓根节点值(例如 [ConnectString]  根节点值为:ConnectString)

DataBase:键,通过该键可获取该键对应的值,

到此这篇关于C#对INI文件进行读写操作的示例代码的文章就介绍到这了,更多相关C#读写操作INI内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文掌握C# JSON(2023最新整理)

    一文掌握C# JSON(2023最新整理)

    JSON的全称是JavaScript Object Notation,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式,这篇文章主要介绍了C#中的JSON(2023最新整理),需要的朋友可以参考下
    2023-05-05
  • C#面向对象设计原则之组合/聚合复用原则

    C#面向对象设计原则之组合/聚合复用原则

    这篇文章介绍了C#面向对象设计原则之组合/聚合复用原则,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C#判断一个类是否实现了某个接口3种实现方法

    C#判断一个类是否实现了某个接口3种实现方法

    这篇文章主要介绍了C#判断一个类是否实现了某个接口3种实现方法,本文直接给出实现代码,需要的朋友可以参考下
    2015-06-06
  • c# webapi 配置swagger的方法

    c# webapi 配置swagger的方法

    这篇文章主要介绍了c# webapi 配置swagger的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C# SQlite操作方法小结

    C# SQlite操作方法小结

    这篇文章主要介绍了C# SQlite操作方法,较为详细的讲述了SQLite的下载与C#针对SQLite的连接、创建、与执行SQL语句等操作相关技巧,需要的朋友可以参考下
    2016-07-07
  • C#编写Windows服务实例代码

    C#编写Windows服务实例代码

    本篇文章主要介绍使用Microsoft Visual Studio2012可以很方便的创建一个Windows服务,本例实现一个向D盘的txt文件里,写入系统时间的Windows服务
    2013-10-10
  • C#使用OpenCvSharp实现图像校正

    C#使用OpenCvSharp实现图像校正

    这篇文章主要为大家详细介绍了C#如何使用OpenCvSharp实现图像校正功能,文中的示例代码简洁易懂,具有一定的学习价值,需要的小伙伴可以参考下
    2023-11-11
  • C#锁住文件的操作步骤

    C#锁住文件的操作步骤

    在本篇文章里小编给大家整理的是关于C#锁住文件的操作步骤以及相关知识点,需要的朋友们参考下。
    2019-08-08
  • C#委托初级使用的实例代码

    C#委托初级使用的实例代码

    这篇代码介绍了C#中委托的初级使用实例,有需要的朋友可以参考一下
    2013-06-06
  • C# 中DateTime 的使用技巧汇总

    C# 中DateTime 的使用技巧汇总

    本文主要介绍了DateTime的使用技巧,包括获取本周、上周、下周、本月、上个月、下个月、本季度、上季度、下季度、本年度、上年度、下年度等多个方法,分享给大家,希望对大家有所帮助。
    2016-04-04

最新评论