C#里面怎樣讀取ini文件


ini文件也是一種配置文件,在早期的windows桌面系統中主要是用ini文件作為系統的配置文件,從win95以后開始轉向使用注冊表,但是還有很多系統配置是使用ini文件的。其實INI文件就是簡單的text文件,只不過這種txt文件要遵循一定的INI文件格式。“.ini ”就是英文 “initialization”的頭三個字母的縮寫;當然ini file的后綴名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"。

INI文件由節、鍵、值組成。  


   [section]  

參數(鍵=值)
   name=value

注解
   注解使用分號表示(;)。在分號后面的文字,直到該行結尾都全部為注解。

 

NI文件的格式很簡單,最基本的三個要素是:parameters,sections和comments。

什么是parameters?

INI所包含的最基本的“元素”就是parameter;每一個parameter都有一個name和一個value,name和value是由等號“=”隔開。name在等號的左邊。

如:

name = value

什么是sections ?

所有的parameters都是以sections為單位結合在一起的。所有的section名稱都是獨占一行,並且sections名字都被方括號包圍着([ and ])。在section聲明后的所有parameters都是屬於該section。對於一個section沒有明顯的結束標志符,一個section的開始就是上一個section的結束,或者是end of the file。Sections一般情況下不能被nested,當然特殊情況下也可以實現sections的嵌套。

section如下所示:

[section]

什么是comments ?

在INI文件中注釋語句是以分號“;”開始的。所有的所有的注釋語句不管多長都是獨占一行直到結束的。在分號和行結束符之間的所有內容都是被忽略的。

注釋實例如下:

;comments text

 

了解了ini文件,接下來就是怎樣在代碼里面讀取文件內容的事情了。

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

namespace TestReadIni
{
  class Program
  {
    static void Main(string[] args)
    {
      String sPath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
      sPath = sPath.Substring(0, sPath.LastIndexOf("\\"));

      string filename = sPath + "\\" + "SMALLERP.ini";

      string strServer = GetIniFileString("DataBase", "Server", "",filename);

       string strUserID = GetIniFileString("DataBase", "User", "",filename);

      string strPwd = GetIniFileString("DataBase", "Password", "",filename);

      WriteFile("DataBase", "Password","1",filename);

      Console.WriteLine("Server = " + strServer);
      Console.WriteLine("user = " + strUserID);
      Console.WriteLine("Password = " + strPwd);

    }

    [DllImport("kernel32")]
    public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal,int size, string filePath);

    [DllImport("kernel32")]
    public static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);

    public static string GetIniFileString(string section, string key, string def, string filePath)
    {
      StringBuilder temp = new StringBuilder(1024);
      GetPrivateProfileString(section, key, def, temp, 1024, filePath);
      return temp.ToString();
    }

    public static void WriteFile(string section, string key, string value, string filePath)
    {
      WritePrivateProfileString(section,key,value,filePath);
    }

  }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM