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#如何动态创建Label,及动态label事件

    C#如何动态创建Label,及动态label事件

    这篇文章主要介绍了C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 详解C# TimeSpan 计算时间差(时间间隔)

    详解C# TimeSpan 计算时间差(时间间隔)

    本篇文章主要介绍了C# TimeSpan 计算时间差(时间间隔),非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • C#图像处理之霓虹效果实现方法

    C#图像处理之霓虹效果实现方法

    这篇文章主要介绍了C#图像处理之霓虹效果实现方法,可实现图片转换成霓虹效果的功能,需要的朋友可以参考下
    2015-04-04
  • C#生成MD5的函数代码

    C#生成MD5的函数代码

    这篇文章主要介绍了C#生成MD5的函数代码,有需要的朋友可以参考一下
    2013-12-12
  • WinForm窗体间传值的方法

    WinForm窗体间传值的方法

    这篇文章主要介绍了WinForm窗体间传值的方法,包括了静态变量、公共变量、共有属性等方式,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • C# 中如何利用lambda实现委托事件的挂接

    C# 中如何利用lambda实现委托事件的挂接

    在写一个小程序的时候,碰到了这样的问题,需要用委托来挂接事件,但是又想在这事件中使用局部的变量,而委托一旦定义好后,挂接方就没有办法再添加额外的形参了。那有没有什么办法,可以实现呢
    2013-07-07
  • Unity3D实现模型淡入淡出效果

    Unity3D实现模型淡入淡出效果

    这篇文章主要为大家详细介绍了Unity3D实现模型淡出效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 直接在线预览Word、Excel、TXT文件之ASP.NET

    直接在线预览Word、Excel、TXT文件之ASP.NET

    这篇文章主要用asp.net技术实现直接在线预览word、excel、txt文件,有需要的朋友可以参考下
    2015-08-08
  • C#入门学习之集合、比较和转换

    C#入门学习之集合、比较和转换

    本文详细讲解了C#中的集合、比较和转换,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • ASP.NET总结C#中7种获取当前路径的方法

    ASP.NET总结C#中7种获取当前路径的方法

    本文主要介绍了7种获取当前路径的方法,并做了代码演示,分享给大家,感兴趣的朋友可以参考一下。
    2016-03-03

最新评论