zoukankan      html  css  js  c++  java
  • C#中读写INI配置文件


    在作应用系统开发时,管理配置是必不可少的。例如数据库服务器的配置、安装和更新配置等等。由于Xml的兴起,现在的配置文件大都是以xml文档来存储。比如Visual Studio.Net自身的配置文件Mashine.config,Asp.Net的配置文件Web.Config,包括我在介绍Remoting中提到的配置文件,都是xml的格式。

    传统的配置文件ini已有被xml文件逐步代替的趋势,但对于简单的配置,ini文件还是有用武之地的。ini文件其实就是一个文本文件,它有固定的格式,节Section的名字用[]括起来,然后换行说明key的值:
    [section]
    key=value

    如数据库服务器配置文件:

    DBServer.ini

    [Server]
    Name=localhost
    [DB]
    Name=NorthWind
    [User]
    Name=sa

    在C#中,对配置文件的读写是通过API函数来完成的,代码很简单:

    using System;

    using System.Text;

    using System.IO;

    using System.Runtime.InteropServices;


    namespace PubOp

    {

        public class OperateIniFile

        {

            #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文件


            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


            #region 写Ini文件


            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

        }

    }


    简单说明以下方法WriteIniData()和ReadIniData()的参数。

    Section参数、Key参数和IniFilePath不用再说,Value参数表明key的值,而这里的NoText对应API函数的def参数,它的值由用户指定,是当在配置文件中没有找到具体的Value时,就用NoText的值来代替。

     NoText 可以为null或""


  • 相关阅读:
    CSS之旅——第二站 如何更深入的理解各种选择器
    CSS之旅——第一站 为什么要用CSS
    记录一些在用wcf的过程中走过的泥巴路 【第一篇】
    asp.net mvc 之旅—— 第二站 窥探Controller下的各种Result
    asp.net mvc 之旅—— 第一站 从简单的razor入手
    Sql Server之旅——终点站 nolock引发的三级事件的一些思考
    Sql Server之旅——第十四站 深入的探讨锁机制
    Sql Server之旅——第十三站 对锁的初步认识
    Sql Server之旅——第十二站 sqltext的参数化处理
    Sql Server之旅——第十一站 简单说说sqlserver的执行计划
  • 原文地址:https://www.cnblogs.com/hgmyz/p/12352094.html
Copyright © 2011-2022 走看看