ini配置文件的讀取

.ini 文件是Initialization File的縮寫,即初始化文件。是windows的系統配置文件所採用的存儲格式,統管windows的各項配置,通常用戶就用windows提供的各項圖形化管理界面就可實現相同的配置了,但在某些狀況,仍是要直接編輯.ini才方便,通常只有很熟悉windows才能去直接編輯。開始時用於WIN3X下面,WIN95用註冊表代替,以及後面的內容表示一個節,至關於註冊表中的鍵。
如今咱們的電腦裏面已經用註冊表來代替了ini文件的配置,可是咱們在一些程序裏面ini文件仍是沒法代替的
有一個setting.ini文件在運用程序.exe同目錄下
LANG]
language=zh-Hans
[LOGIN]
serverIP=你須要的服務器IP地址
userName=chaoyue
userPass=000000
[MAPINFO]
web1lat=34.2638
web1lng=108.9469
web2lat=34.2638
web2lng=108.9469
web1zoom=10
web2zoom=10
web1southWestlat=10.055402736564236
web1northEastlat=53.067626642387374
web1southWestlng=58.798828125
web1northEastlng=159.08203125
web2southWestlat=23.32208001137843
web2northEastlat=43.96119063892024
web2southWestlng=81.298828125
web2northEastlng=136.669921875
ini文件的格式
 
格式  INI文件由節、鍵、值組成。

  [section]

參數(鍵=值)

  name=value

註解

  註解使用分號表示(;)。在分號後面的文字,直到該行結尾都所有爲註解。
 
  ; comment textINI文件的數據格式的例子(配置文件的內容) [Section1 Name]
 
  KeyName1=value1
 
  KeyName2=value2
 
  ...
 
  [Section2 Name]
 
  KeyName21=value21
 
  KeyName22=value22
 
  其中:
 
  [Section1 Name]用來表示一個段落。
 
  由於INI文件多是項目中共用的,因此使用[Section Name]段名來區分不一樣用途的參數區。例如:[Section1 Name]表示傳感器靈敏度參數區;[Section2 Name]表示測量通道參數區等等。
 
  KeyName1=value1 用來表示一個參數名和值。
 
  好比:
 
  7033=50
 
  7034=51
 
  其中:
 
  7033表示某傳感器名,50表示它的靈敏度值。
 
  7034表示另外一隻傳感器名,51表示它的靈敏度值。
 
瞭解了ini的文件格式了,那麼如今就用一個類來操做它
cIni:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
namespace 你的命名空間
{
    class CIni
    {
        //聲明讀寫INI文件的API函數    
        public string path;
        public CIni()
        {
        }
        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
        /// <summary>
        /// ini文件編寫器
        /// </summary>
        /// <param name="section">查找ini文件的節點[]名</param>
        /// <param name="key">節點下邊的鍵</param>
        /// <param name="val">節點的值</param>
        /// <param name="filePath">來自的文件</param>
        public void WriterINI(string section, string key, string val,string filePath)
        {
            path = System.Environment.CurrentDirectory + "\\" + filePath;
            WritePrivateProfileString(section, key, val, path);
        }
        /// <summary>
        /// 讀取Ini文件
        /// </summary>
        /// <param name="section">得到節點</param>
        /// <param name="key">節點下邊的鍵</param>
        /// <param name="filePath">文件路徑</param>
        /// <returns>返回的值</returns>
        public string ReadINI(string section, string key, string filePath)
        {
            path = System.Environment.CurrentDirectory + "\\" + filePath;
            StringBuilder temp = new StringBuilder(255);
            GetPrivateProfileString(section, key, "", temp, 255, path);
            return temp.ToString().Trim();
        }
    }
}
用法:
    /// <summary>
        /// 讀取Ini文件
        /// </summary>
        /// <param name="strConet">字段</param>
        /// <param name="order"></param>
        private void WriterINI(string strConet, int order)
        {
            GetNextToken(ref strConet, ",");
            CIni ini = new CIni();
            if (order == 1)
            {
                ini.WriterINI("MAPINFO", "web1lat", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web1lng", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web1zoom", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web1southWestlat", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web1northEastlat", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web1southWestlng", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web1northEastlng", GetNextToken(ref strConet, ","), "Setting.ini");
            }
            else
            {
                ini.WriterINI("MAPINFO", "web2lat", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web2lng", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web2zoom", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web2southWestlat", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web2northEastlat", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web2southWestlng", GetNextToken(ref strConet, ","), "Setting.ini");
                ini.WriterINI("MAPINFO", "web2northEastlng", GetNextToken(ref strConet, ","), "Setting.ini");
            }
        }
////GetNextToken方法
   private string GetNextToken(ref string strContent, string strDelim)
        {
            string str = "";
            int idx = strContent.IndexOf(strDelim, 0, strContent.Length);
            if (idx > 0)
            {
                str = strContent.Substring(0, idx);
                strContent = strContent.Remove(0, idx + 1);
            }
            else
            {
                str = strContent;
            }
            return str;
        }
        /// <summary>
        /// 設置ini文件
        /// </summary>
        private void SetCenter()
        {
            CIni ini = new CIni();
            string strweb1lat = ini.ReadINI("MAPINFO", "web1lat", "Setting.ini");
            string strweb1lng = ini.ReadINI("MAPINFO", "web1lng", "Setting.ini");
            string strweb1zoom = ini.ReadINI("MAPINFO", "web1zoom", "Setting.ini");
            string strweb2lat = ini.ReadINI("MAPINFO", "web2lat", "Setting.ini");
            string strweb2lng = ini.ReadINI("MAPINFO", "web2lng", "Setting.ini");
            string strweb2zoom = ini.ReadINI("MAPINFO", "web2zoom", "Setting.ini");
            //你的方法寫在這裏.....          
        }
 之前經常使用ini來作配置文件,如今打都是在用config 來做爲配置文件
相關文章
相關標籤/搜索