纳金网

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

作者: 烟雨    时间: 2015-10-28 23:28
标题: 利用GetPrivateProfileString读取ini文件的字段

//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






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