.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文件由節、鍵、值組成。
; 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表示它的靈敏度值。
節
[section]參數(鍵=值)
name=value注解
注解使用分號表示(;)。在分號后面的文字,直到該行結尾都全部為注解。
了解了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 來作為配置文件