查看: 525|回复: 0
打印 上一主题 下一主题

[其他] 利用GetPrivateProfileString读取ini文件的字段

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2015-12-30 23:34:03 |只看该作者 |倒序浏览
  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
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-9-13 07:25 , Processed in 0.095225 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部