欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#中读写INI文件的方法例子

程序员文章站 2023-12-15 18:38:10
通常c#使用基于xml的配置文件,不过如果有需要的话,比如要兼顾较老的系统,可能还是要用到ini文件。但c#本身并不具备读写ini文件的api,只有通过调用非托管代码的方式...

通常c#使用基于xml的配置文件,不过如果有需要的话,比如要兼顾较老的系统,可能还是要用到ini文件。
但c#本身并不具备读写ini文件的api,只有通过调用非托管代码的方式,即系统自身的api才能达到所需的目的。

对应读写的方法分别为getprivateprofilestring和writeprivateprofilestring。

getprivateprofilestring中的各参数:
lpappname —— section的名称
lpkeyname —— key的名称
lpdefault —— 如果lpkeyname没有被找到的话,则将这个值复制到lpreturnedstring中
lpreturnedstring —— 用于返回结果的值
nsize —— lpreturnedstring的字符长度
lpfilename —— ini文件名

writeprivateprofilestring中的各参数:
lpappname —— section的名称
lpkeyname —— key的名称
lpstring —— 与lpkeyname对应的值
lpfilename —— ini文件名

实际代码如下所示:

复制代码 代码如下:

using system;
using system.runtime.interopservices;
using system.text;

namespace inidemo
{
    class program
    {
        static void main(string[] args)
        {
            writeprivateprofilestring("demo", "abc", "123", "c:\\demo.ini");

            stringbuilder temp = new stringbuilder();
            getprivateprofilestring("demo", "abc", "", temp, 255, "c:\\demo.ini");
            console.writeline(temp);

            console.readline();
        }

        [dllimport("kernel32", charset = charset.unicode, setlasterror = true)]
        private static extern bool writeprivateprofilestring(
            string lpappname, string lpkeyname, string lpstring, string lpfilename);

        [dllimport("kernel32", charset = charset.unicode, setlasterror = true)]
        private static extern int getprivateprofilestring(
            string lpappname, string lpkeyname, string lpdefault, stringbuilder lpreturnedstring,
            int nsize, string lpfilename);
    }
}


程序运行后ini文件中的内容为:

复制代码 代码如下:

[demo]
abc=123

这是一种相对简单的方法,若是不想使用非托管方法,你也可以通过另一种比较麻烦的途径解决这个问题。

由于ini文件的格式是固定的,所以只要编写相应的解析程序就可以完成同样的读写功能,就是通常的字符串处理而已。

如果你不愿亲自动手的话,不要紧,已经有现成的程序——cinchoo framework,可以为你实现你想作的事情。

然后一切又变得简单了。

上一篇:

下一篇: