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#影院售票系统毕业设计(4)

    C#影院售票系统毕业设计(4)

    这篇文章主要介绍了C#影院售票系统毕业设计,学习内容是总结销售信息的保存以及加载销售信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • C#中的虚函数virtual

    C#中的虚函数virtual

    这篇文章介绍了C#中的虚函数virtual,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#验证码的创建与使用示例

    C#验证码的创建与使用示例

    这篇文章主要介绍了C#验证码的创建与使用方法,结合实例形式较为详细的分析了C#验证码的创建、验证等操作步骤与相关技巧,需要的朋友可以参考下
    2017-01-01
  • WinForm实现基于BindingSource的方法扩展

    WinForm实现基于BindingSource的方法扩展

    这篇文章主要介绍了WinForm实现基于BindingSource的方法扩展,需要的朋友可以参考下
    2014-08-08
  • 一篇文章彻底搞清楚c#中的委托与事件

    一篇文章彻底搞清楚c#中的委托与事件

    这篇文章主要给大家介绍了如何通过一篇文章彻底搞清楚c#中的委托与事件,文中通过示例代码介绍的非常详细,对大家学习或者使用c#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • C#获取USB事件API实例分析

    C#获取USB事件API实例分析

    这篇文章主要介绍了C#获取USB事件API,实例分析了C#操作USB事件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • WPF实现图片合成或加水印的方法【2种方法】

    WPF实现图片合成或加水印的方法【2种方法】

    这篇文章主要介绍了WPF实现图片合成或加水印的方法,结合实例形式分析了2种比较实用的WPF图片操作相关技巧,需要的朋友可以参考下
    2017-03-03
  • DataGridView清除显示的数据、设定右键菜单

    DataGridView清除显示的数据、设定右键菜单

    这篇文章介绍了DataGridView清除显示的数据、设定右键菜单的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • 简单的观察者模式示例分享

    简单的观察者模式示例分享

    这篇文章主要介绍了简单的观察者模式示例,抽象层定义了观察者模式,实现层是对抽象层的具体实现,需要的朋友可以参考下
    2014-03-03
  • unity3D实现摄像机抖动特效

    unity3D实现摄像机抖动特效

    这篇文章主要为大家详细介绍了unity3D实现摄像机抖动特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01

最新评论