纳金网

标题: 利用GetPrivateProfileString读取ini文件的字段 [打印本页]

作者: 烟雨    时间: 2015-12-30 23:34
标题: 利用GetPrivateProfileString读取ini文件的字段
  1. /INIClass读取类
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Runtime.InteropServices;
  7. using System.IO;
  8. using UnityEngine;

  9. namespace cReadConfigFile
  10. {
  11.     public class INIClass
  12.     {
  13.         public string inipath;
  14.         [DllImport("kernel32")]
  15.         private static extern long WritePrivateProfileString(string section, string key,string val, string filePath);
  16.         [DllImport("kernel32")]
  17.         private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
  18.         /// <summary>
  19.         /// 构造方法
  20.         /// </summary>
  21.         /// <param name="INIPath">文件路径</param>
  22.         public INIClass(string INIPath)
  23.         {
  24.             inipath = INIPath;
  25.         }
  26.         /// <summary>
  27.         /// 写入INI文件
  28.         /// </summary>
  29.         /// <param name="Section">项目名称(如 [TypeName] )</param>
  30.         /// <param name="Key">键</param>
  31.         /// <param name="Value">值</param>
  32.         public void IniWriteValue(string Section, string Key, string Value)
  33.         {
  34.             WritePrivateProfileString(Section, Key, Value, this.inipath);
  35.         }
  36.         /// <summary>
  37.         /// 读出INI文件
  38.         /// </summary>
  39.         /// <param name="Section">项目名称(如 [TypeName] )</param>
  40.         /// <param name="Key">键</param>
  41.         public string IniReadValue(string Section, string Key)
  42.         {
  43.             StringBuilder temp = new StringBuilder(500);

  44.             int i = GetPrivateProfileString(Section, Key, "100", temp, 500, this.inipath);
  45.             return temp.ToString();
  46.         }
  47.         /// <summary>
  48.         /// 验证文件是否存在
  49.         /// </summary>
  50.         /// <returns>布尔值</returns>
  51.         public bool ExistINIFile()
  52.         {
  53.             return File.Exists(inipath);
  54.         }

  55.     /// <summary>获得相应文件名所有名称
  56.     ///
  57.     /// </summary>
  58.     /// <param name="srcPath">目录</param>
  59.     /// <param name="sFileName">对应文件</param>
  60.     /// <returns></returns>
  61.     /// <remarks></remarks>
  62.         public List<string> fFileList(
  63.             string srcPath)
  64.         {
  65.             List<string> fList = new List<string>();

  66.             // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
  67.             string[] fileList = Directory.GetFiles(srcPath);

  68.             //'添加相同的文件
  69.             foreach (string sItem in fileList)
  70.             {
  71.                 if ("*.jpg *.bmp *.gif".IndexOf(sItem.Substring(sItem.Length-3,3)) > 0)
  72.                 {
  73.                     fList.Add(sItem);
  74.                 }
  75.                
  76.             }

  77.             return fList;

  78.         }
  79.     }
  80. }

  81. //应用实例
  82.    public Text tx;
  83.     INIClass iniCls;
  84.    void Start ()
  85.     {
  86.         iniCls = new INIClass(Application.dataPath+"/config.ini");
  87.         tx.text = iniCls.IniReadValue("Net", "port");
  88.        tx.text = iniCls.IniReadValue("Net", "LaunchID");
  89.         }
  90. //ini文件的格式如下
  91. [Net]
  92. port=10006
  93. LaunchID=Launch1
  94. 应用的时候不要加方括号[]
  95. port是key
  96. 10006是value
复制代码





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5