ini文件的简单调用,相比xml更容易使用

       首先,对于xml,我相信大家并不陌生吧,xml主要是做什么的,如何去调用,一般学过xml的人都知道,这里我就不复述了,为什么我会反复提xml呢?原因是ini文件与xml有着异曲同工之妙,他也是用来存储数据,提取数据用的,和xml类似,对于用过ini文件的人来说,我相信大家更愿意用ini文件来实现数据的提取,比xml确实方便多了,ini最根本的还是利用了微软的API来实现一系列操作的。在这里,我就把我封装好的ini文件的增删查改代码先贴上:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace iniFile
{
    public static class iniClass
    {
        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);
        [DllImport("kernel32")]
        private static extern long GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, System.Text.StringBuilder lpReturnedString, int nSize, string lpFileName);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string defVal, Byte[] retVal, int size, string filePath);
        /// <summary>
        /// 指定某个条目名,获取其Value值
        /// </summary>
        /// <param name="section">小节名称</param>
        /// <param name="key">设置的条目名</param>
        /// <param name="path">ini文件地址</param>
        /// <returns></returns>
        public static string getKeyValue(string section, string key,string path)
        { 
            StringBuilder sb=new StringBuilder(1024);
            GetPrivateProfileString(section, key, string.Empty, sb, 1024, path);
            return sb.ToString().Trim();
        }
        /// <summary>
        /// 向ini文件新增Key值,或将已存在的Key的Value值覆盖
        /// </summary>
        /// <param name="section">小节名称</param>
        /// <param name="key">设置的条目名</param>
        /// <param name="value">条目的值</param>
        /// <param name="path">ini文件地址</param>
        /// <returns></returns>
        public static long WriteKeyValue(string section, string key,string value,string path)
        {
            return WritePrivateProfileString(section, key,value,path);
        }
        /// <summary>
        /// 删除指定小节的键值
        /// </summary>
        /// <param name="section"></param>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        public static long DeleKeyValue(string section, string key, string value, string path)
        {
            return WritePrivateProfileString(section,key,null,path);
        }
        /// <summary>
        /// 删除指定的小节(包括这个小节中所有的键)
        /// </summary>
        /// <param name="section"></param>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        public static long DeleSection(string section, string key, string value, string path)
        {
            return WritePrivateProfileString(section, null, null, path);
        }
	///获取某个section下的所有Key的字节

public static byte[] IniReadValues(string section, string key, string path)         {             byte[] temp = new byte[255];

            int i = GetPrivateProfileString(section, key, "", temp, 255, path);             return temp;         }

} }

上述的代码我已封装成dll文件了,直接引用dll,就可以使用了,如何去使用,接下来就告诉大家。在程序根目录下下新建一个文本文档,将后缀名改为.ini格式,其实和txt文本差不多,只是后缀名不一样罢了,一般我们用ini文件来做配置用,基本上大部分的软件里都会看到ini文件,你们可以去看看。好了,文本文档建好后,看我的格式:

看起来是不是很简单,大家看到ini文件的格式后,第一感觉是什么?会不会让大家想到很窝心的Key-Value键值对。通过键来获取值,是不是so easy啊。写到这,基本的ini准备工作已经就绪了,接下来就是在winform中如何去调用了,这里,我就举个例子,教大家如何获取键对应的值,我就用我封装好的dll直接调用啦..

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //新增及获取操作
        private void button1_Click(object sender, EventArgs e)
        {

            string str = Application.StartupPath + "\\SystemBase.ini";
            //这个就是向文件中写入值,或者将相同的key的值覆盖掉
            iniFile.iniClass.WriteKeyValue("student", "name", "我是奥巴马,我是大混蛋", str);

           //这个是获取键值
            textBox1.Text = iniFile.iniClass.getKeyValue("student", "name", str);
 
                //这个是将获取的key字节转换成string的数值形式

string[] sectionList;

                ASCIIEncoding ascii = new ASCIIEncoding();

                byte[] sectionByte = iniFile.iniClass.IniReadValues("student", null, str);

                string sections = ascii.GetString(sectionByte);

                sectionList = sections.Split(new char[1] { '\0' });

} //删除操作 private void button2_Click(object sender, EventArgs e) { string str = Application.StartupPath + "\\SystemBase.ini"; //这个是删除指定某个键的键值对 iniFile.iniClass.DeleKeyValue("student","age",null,str); //这个是删除某个节点所有的键值对 iniFile.iniClass.DeleSection("student",null,null,str); } } }

好了,基本的增删获取操作都已涉及到了,相信以大家的智慧,很容易吸收到。以后就可以用ini文件替代xml了,当然有时候用xml还是比较好的。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值