c# 读取INI文件(将内容写入INI文件)

本文介绍使用C#进行INI文件的读取与写入操作。通过API函数声明实现读取与写入功能,并提供了完整的代码示例。适用于需要配置管理的应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c#读取INI文件实例

读取ini文件内容,将读取的内容放在指定位置;将内容写入到ini文件中
如图为项目界面
在这里插入图片描述

1 c# 读取ini文件方法

1.1 在类中配置API

#region API函数声明-必须放在类中
        [DllImport("kernel32")]//返回0表示失败,非0为成功
        private static extern long WritePrivateProfileString(string section, string key,
          string val, string filePath);
        [DllImport("kernel32")]//返回取得字符串缓冲区的长度
        private static extern long GetPrivateProfileString(string section, string key,
          string def, StringBuilder retVal, int size, string filePath);
        #endregion

1.2 编写读取方法

 #region 读Ini文件
        /// <summary>
        /// 读取ini文件内容的方法
        /// </summary>
        /// <param name="Section">ini文件的节名</param>
        /// <param name="Key">ini文件对应节下的健名</param>
        /// <param name="NoText">ini文件对应节对应健下无内容时返回的值</param>
        /// <param name="iniFilePath">该ini文件的路径</param>
        /// <returns></returns>
        public static string ReadIniData(string Section, string Key, string NoText, string iniFilePath)
        {
            if (File.Exists(iniFilePath))
            {
                StringBuilder temp = new StringBuilder(1024);
                GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
                return temp.ToString();
            }
            else
            {
                return String.Empty;
            }
        }
        #endregion

1.3 在按钮点击事件中调用读取方法

 private void button1_Click(object sender, EventArgs e)
        {          
            label1.Text = ReadIniData("section_1", "section_1_key1", "no_section_1_key1_text", @"F:\c sharp learning\get_Ini_text\myinifile.ini");
            label2.Text = ReadIniData("section_2", "section_2_key2", "no_section_2_key1_text", @"F:\c sharp learning\get_Ini_text\myinifile.ini");
            label3.Text = ReadIniData("section_3", "section_3_key3", "no_section_3_key3_text", @"F:\c sharp learning\get_Ini_text\myinifile.ini");
        }

1.4 读取ini文件结果

在这里插入图片描述

2 将内容写入INI文件方法如下

2.1 方法

#region 写Ini文件
        /// <summary>
        /// 将内容写入指定的ini文件中
        /// </summary>
        /// <param name="Section">ini文件中的节名</param>
        /// <param name="Key">ini文件中的键</param>
        /// <param name="Value">要写入该键所对应的值</param>
        /// <param name="iniFilePath">ini文件路径</param>
        /// <returns></returns>
        public static bool WriteIniData(string Section, string Key, string Value, string iniFilePath)
        {
            if (File.Exists(iniFilePath))
            {
                long OpStation = WritePrivateProfileString(Section, Key, Value, iniFilePath);
                if (OpStation == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return false;
            }
        }
        #endregion

2.2 测试

在按钮的点击事件中调用该方法

 private void button2_Click(object sender, EventArgs e)
        {
            if (WriteIniData("section_4", "section_4_key4", "刚写入该键下的值", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini"))
                MessageBox.Show("写入ini文件成功");
            else
                MessageBox.Show("写入ini文件失败");
        }

2.3 结果

2.3.1 点击界面按钮

在这里插入图片描述

2.3.2 查看ini文件

在这里插入图片描述

3 代码总览

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;

namespace get_Ini_text
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        #region API函数声明-必须放在类中
        [DllImport("kernel32")]//返回0表示失败,非0为成功
        private static extern long WritePrivateProfileString(string section, string key,
          string val, string filePath);
        [DllImport("kernel32")]//返回取得字符串缓冲区的长度
        private static extern long GetPrivateProfileString(string section, string key,
          string def, StringBuilder retVal, int size, string filePath);
        #endregion
        #region 读Ini文件
        /// <summary>
        /// 读取ini文件内容的方法
        /// </summary>
        /// <param name="Section">ini文件的节名</param>
        /// <param name="Key">ini文件对应节下的健名</param>
        /// <param name="NoText">ini文件对应节对应健下无内容时返回的值</param>
        /// <param name="iniFilePath">该ini文件的路径</param>
        /// <returns></returns>
        public static string ReadIniData(string Section, string Key, string NoText, string iniFilePath)
        {
            if (File.Exists(iniFilePath))
            {
                StringBuilder temp = new StringBuilder(1024);
                GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
                return temp.ToString();
            }
            else
            {
                return String.Empty;
            }
        }
        #region 写Ini文件
        /// <summary>
        /// 将内容写入指定的ini文件中
        /// </summary>
        /// <param name="Section">ini文件中的节名</param>
        /// <param name="Key">ini文件中的键</param>
        /// <param name="Value">要写入该键所对应的值</param>
        /// <param name="iniFilePath">ini文件路径</param>
        /// <returns></returns>
        public static bool WriteIniData(string Section, string Key, string Value, string iniFilePath)
        {
            if (File.Exists(iniFilePath))
            {
                long OpStation = WritePrivateProfileString(Section, Key, Value, iniFilePath);
                if (OpStation == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return false;
            }
        }
        #endregion
        #endregion
        private void button1_Click(object sender, EventArgs e)
        {          
            label1.Text = ReadIniData("section_1", "section_1_key1", "no_section_1_key1_text", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini");
            label2.Text = ReadIniData("section_2", "section_2_key2", "no_section_2_key1_text", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini");
            label3.Text = ReadIniData("section_3", "section_3_key3", "no_section_3_key3_text", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (WriteIniData("section_4", "section_4_key4", "刚写入该键下的值", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini"))
                MessageBox.Show("写入ini文件成功");
            else
                MessageBox.Show("写入ini文件失败");
        }
    }
}

4 引用

https://www.jb51.net/article/143380.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值