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

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

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

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

跳转到指定楼层
楼主
发表于 2015-10-28 23:28:20 |只看该作者 |倒序浏览

//INIClass读取类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Interopservices;
using System.IO;
using UnityEngine;

namespace cReadConfigFile
{
    public class INIClass
    {
        public string inipath;
        [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>
        /// 构造方法
        /// </summary>
        /// <param name="INIPath">文件路径</param>
        public INIClass(string INIPath)
        {
            inipath = INIPath;
        }
        /// <summary>
        /// 写入INI文件
        /// </summary>
        /// <param name="Section">项目名称(如 [TypeName] )</param>
        /// <param name="Key">键</param>
        /// <param name="Value">值</param>
        public void IniWriteValue(string Section, string Key, string Value)
        {
            WritePrivateProfileString(Section, Key, Value, this.inipath);
        }
        /// <summary>
        /// 读出INI文件
        /// </summary>
        /// <param name="Section">项目名称(如 [TypeName] )</param>
        /// <param name="Key">键</param>
        public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(500);

            int i = GetPrivateProfileString(Section, Key, "100", temp, 500, this.inipath);
            return temp.ToString();
        }
        /// <summary>
        /// 验证文件是否存在
        /// </summary>
        /// <returns>布尔值</returns>
        public bool ExistINIFile()
        {
            return File.Exists(inipath);
        }

    /// <summary>获得相应文件名所有名称
    ///
    /// </summary>
    /// <param name="srcPath">目录</param>
    /// <param name="sFileName">对应文件</param>
    /// <returns></returns>
    /// <remarks></remarks>
        public List<string> fFileList(
            string srcPath)
        {
            List<string> fList = new List<string>();

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

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

            }

            return fList;

        }
    }
}

//应用实例
   public Text tx;
    INIClass iniCls;
   void Start ()
    {
        iniCls = new INIClass(Application.dataPath+"/config.ini");
        tx.text = iniCls.IniReadValue("Net", "port");
       tx.text = iniCls.IniReadValue("Net", "LaunchID");
        }

//ini文件的格式如下
[Net]
port=10006
LaunchID=Launch1

应用的时候不要加方括号[]
port是key
10006是value

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

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

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

GMT+8, 2025-8-14 11:14 , Processed in 0.059318 second(s), 28 queries .

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

© 2008-2019 Narkii Inc.

回顶部