精华内容
下载资源
问答
  • 2020-11-04 18:28:45

    今天要写一个小工具需要读取配置文件数据,准备用ini文件来实现方便使用者使用,在网上找了一下发现很多都是要自写或新建一个类来实现,有点麻烦,分享一个简单一点的方法:
    首先要引用基本的using System.IO命名空间:

    using System.IO;
    

    然后就是获取ini文件所在目录:

    static string iniPath = System.IO.Path.GetDirectoryName(directory) + "\\" + "config.ini";
    string host;
    string user;
    string pw;
    string dbName;
    

    再写一个函数读取此ini文件键值:

      public string GetValueFromIniFile(string key)
            {
                try
                {
                    StreamReader sr = new StreamReader(iniPath, Encoding.Default);
                    string configLines = sr.ReadToEnd();
                    Regex reg = new Regex(key + @"=\S+");
                    string str = reg.Matches(configLines)[0].Value;
                    str = str.Substring(str.IndexOf('=') + 1);
                    return str;
                }
                catch
                {
                    return "";
                }
            }
    

    最后就是获取ini文件信息了:

             public void InitTestConfig()
            {
                if (!File.Exists(iniPath))
                {
                    MessageBox.Show("未找到配置文件路径!");
                }
                host = GetValueFromIniFile("数据库IP");
                user = GetValueFromIniFile("用户名");
                pw = GetValueFromIniFile("数据库密码");
                dbName = GetValueFromIniFile("数据库名");
                return;
            }
    

    相应的写入ini文件代码后续再更新此文章
    注意!此方法虽然简单,但是最大的缺点是只能有简单的配置文件中使用,也就是只有一个节[section],当有不同的节时不能有相同的键出现,否则会出错,谢谢!

    更多相关内容
  • winform 读写ini文件

    2021-04-07 17:31:03
    IniFileHelper类; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text;... // ini配置文件路径 .
    IniFileHelper类;
    
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    
    namespace UserGG
    {
        class IniFileHelper
        {
            string strIniFilePath;  // ini配置文件路径
    
            // 返回0表示失败,非0为成功
            [DllImport("kernel32", CharSet = CharSet.Auto)]
            private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
    
            // 返回取得字符串缓冲区的长度
            [DllImport("kernel32", CharSet = CharSet.Auto)]
            private static extern long GetPrivateProfileString(string section, string key, string strDefault, StringBuilder retVal, int size, string filePath);
    
            [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
            public static extern int GetPrivateProfileInt(string section, string key, int nDefault, string filePath);
    
            /// <summary>
            /// 无参构造函数
            /// </summary>
            /// <returns></returns>
            public IniFileHelper()
            {
                this.strIniFilePath = Directory.GetCurrentDirectory() + "\\sysconfig.ini";
            }
    
    
            /// <summary>
            /// 有参构造函数
            /// </summary>
            /// <param name="strIniFilePath">ini配置文件路径</param>
            /// <returns></returns>
            public IniFileHelper(string strIniFilePath)
            {
                if (strIniFilePath != null)
                {
                    this.strIniFilePath = strIniFilePath;
                }
            }
    
    
            /// <summary>
            /// 获取ini配置文件中的字符串
            /// </summary>
            /// <param name="section">节名</param>
            /// <param name="key">键名</param>
            /// <param name="strDefault">默认值</param>
            /// <param name="retVal">结果缓冲区</param>
            /// <param name="size">结果缓冲区大小</param>
            /// <returns>成功true,失败false</returns>
            public bool GetIniString(string section, string key, string strDefault, StringBuilder retVal, int size)
            {
                long liRet = GetPrivateProfileString(section, key, strDefault, retVal, size, strIniFilePath);
                return (liRet >= 1);
            }
    
    
            /// <summary>
            /// 获取ini配置文件中的整型值
            /// </summary>
            /// <param name="section">节名</param>
            /// <param name="key">键名</param>
            /// <param name="nDefault">默认值</param>
            /// <returns></returns>
            public int GetIniInt(string section, string key, int nDefault)
            {
                return GetPrivateProfileInt(section, key, nDefault, strIniFilePath);
            }
    
    
            /// <summary>
            /// 往ini配置文件写入字符串
            /// </summary>
            /// <param name="section">节名</param>
            /// <param name="key">键名</param>
            /// <param name="val">要写入的字符串</param>
            /// <returns>成功true,失败false</returns>
            public bool WriteIniString(string section, string key, string val)
            {
                long liRet = WritePrivateProfileString(section, key, val, strIniFilePath);
                return (liRet != 0);
            }
    
    
            /// <summary>
            /// 往ini配置文件写入整型数据
            /// </summary>
            /// <param name="section">节名</param>
            /// <param name="key">键名</param>
            /// <param name="val">要写入的数据</param>
            /// <returns>成功true,失败false</returns>
            public bool WriteIniInt(string section, string key, int val)
            {
                return WriteIniString(section, key, val.ToString());
            }
        }
    }
    

    读写操作:

            private void btn_读取_Click(object sender, EventArgs e)
            {
                IniFileHelper iniFileHelper = new IniFileHelper();
                StringBuilder sb = new StringBuilder(60);
                iniFileHelper.GetIniString("tokeninfo", "apiUrl", "", sb, sb.Capacity);
                string aaa = sb.ToString();
            }
    
            private void btn_写入_Click(object sender, EventArgs e)
            {
                IniFileHelper iniFileHelper = new IniFileHelper();
                iniFileHelper.WriteIniString("tokeninfo", "apiUrl", "newString");
                iniFileHelper.WriteIniString("tokeninfo", "apiUrl1", "newString1");
                iniFileHelper.WriteIniString("tokeninfo", "apiUrl2", "newString2");
            }

    展开全文
  • Winform 读写INI文件

    2017-05-03 08:21:09
    Winform 读写INI文件,自己摸索出来的。
  • Winform 读写INI文件 简单例子
  • c# winform demo 读取INI文件内容 读取配置文件中的内容。在网上找了很多,比较麻烦。此demo很简洁,但是有一个问题,ini文件中的第一个内容读不出来,从第二开始可以正常读写
  • C# winform读写ini文件

    千次阅读 2015-11-05 21:13:37
    C# winform读写ini文件

    INI文件是一种具有特定结构的文本文件,它的构成分为三部分,结构如下:

    [Section1]
    key 
    1 = value2
    key 
    1 = value2
    ……
    [Section2]
    key 
    1 = value1
    key 
    2 = value2
    ……


    文件由若干个段落(section)组成,每个段落又分成若干个键(key)和值(value)。Windows系统自带的Win32的API函数GetPrivateProfileString()和WritePrivateProfileString()分别实现了对INI文件的读写操作,他们位于kernel32.dll下。

    但是令人遗憾的是C#所使用的.NET框架下的公共类库并没有提供直接操作INI文件的类,所以唯一比较理想的方法就是调用API函数。

    然后,.Net框架下的类库是基于托管代码的,而API函数是基于非托管代码的,(在运行库的控制下执行的代码称作托管代码。相反,在运行库之外运行的代码称作非托管代码。)如何实现托管代码与非托管代码之间的操作呢?.Net框架的System.Runtime.InteropServices命名空间下提供各种各样支持COM interop及平台调用服务的成员,其中最重要的属性之一DllImportAttribute可以用来定义用于访问非托管API的平台调用方法,它提供了对从非托管DLL导出的函数进行调用所必需的信息。下面就来看一下如何实现C#与API函数的互操作。

    读操作:

    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string section, string key, string defVal, StringBuilder retVal, int size, string filePath); 
    section:要读取的段落名
    key: 要读取的键
    defVal: 读取异常的情况下的缺省值
    retVal: key所对应的值,如果该key不存在则返回空值
    size: 值允许的大小
    filePath: INI文件的完整路径和文件名
    写操作:

    [DllImport("kernel32")] 
    private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); 
    section: 要写入的段落名
    key: 要写入的键,如果该key存在则覆盖写入
    val: key所对应的值
    filePath: INI文件的完整路径和文件名
    这样,在就可以使用对他们的调用,用常规的方式定义一个名为 IniFile 类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.IO;
    
    namespace 测试
    {
        /// <summary>
        /// INI文件的操作类
        /// </summary>
        public class IniFile
        {
            public string Path;
    
            public IniFile(string path)
            {
                this.Path = path;
            }
    
            #region 声明读写INI文件的API函数
    
            [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 defVal, StringBuilder retVal, int size, string filePath);
    
            [DllImport("kernel32")]
            private static extern int GetPrivateProfileString(string section, string key, string defVal, Byte[] retVal, int size, string filePath);
    
            #endregion
    
            /// <summary>
            /// 写INI文件
            /// </summary>
            /// <param name="section">段落</param>
            /// <param name="key">键</param>
            /// <param name="iValue">值</param>
            public void IniWriteValue(string section, string key, string iValue)
            {
                WritePrivateProfileString(section, key, iValue, this.Path);
            }
    
            /// <summary>
            /// 读取INI文件
            /// </summary>
            /// <param name="section">段落</param>
            /// <param name="key">键</param>
            /// <returns>返回的键值</returns>
            public string IniReadValue(string section, string key)
            {
                StringBuilder temp = new StringBuilder(255);
    
                int i = GetPrivateProfileString(section, key, "", temp, 255, this.Path);
                return temp.ToString();
            }
    
            /// <summary>
            /// 读取INI文件
            /// </summary>
            /// <param name="Section">段,格式[]</param>
            /// <param name="Key">键</param>
            /// <returns>返回byte类型的section组或键值组</returns>
            public byte[] IniReadValues(string section, string key)
            {
                byte[] temp = new byte[255];
    
                int i = GetPrivateProfileString(section, key, "", temp, 255, this.Path);
                return temp;
            }
        }
    }

    程序在调用IniFile类时需要先实例化

    string path = Environment.CurrentDirectory + @"\Config.ini";  //指定ini文件的路径
    IniFile ini = new IniFile(path);
    string FpOrderNumber = ini.IniReadValue("SQL", "FpOrderNumber");//读取ini文件中键<span style="font-family: Arial, Helvetica, sans-serif;">FpOrderNumber的值</span><pre name="code" class="csharp" style="font-size: 13px; line-height: 19px;">ini.IniWriteValue("SQL", "FpOrderNumber", tsslMo.Text);//将tsslMo.Text的值写到键FpOrderNumber中去
    

     
    


    展开全文
  • C# WinForm读写INI文件

    热门讨论 2009-03-30 23:55:03
    C# WinForm读写INI文件 C# WinForm读写INI文件 C# WinForm读写INI文件
  • C#开发WinFormIni读写

    千次阅读 2018-12-05 09:12:43
    C#开发WinFormIni读写 文章目录C#开发WinFormIni读写前言工具类apiReadValue(string key)ReadValue(string key, string section)ReadValues()Write(string key, string value)Write(string section, string key,...

    C#开发WinForm之Ini读写

    前言

    .ini 文件是Initialization File的缩写,即初始化文件。和txt文件类似,就是文本文件,只是里面内容有自己的格式。
    INI文件由节(section)、键、值组成。
    例如

    [main]
    name=cy
    age=18
    

    注解使用分号表示;。在分号后面的文字,直到该行结尾都全部为注解。
    因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。
    例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。
    下面是一个ini文件下包含2个节名的配置。

    [main]
    name=cy
    age=18
    [port]
    portname=COM4
    port=4
    

    工具类

    工具类INIUtil.cs:

    
    using System;
    using System.IO;
    using System.Reflection;
    using System.Text.RegularExpressions;
    /**
     * ini数据管理类
     * */
    namespace DongliCAD.utils
    {
        class INIUtil
        {
            private string iniFile = FileUtil.GetAssemblyPath() + @"/dongliData.ini";
            private static string defaultSection = "main";
            public static System.Text.Encoding Encoding = System.Text.Encoding.UTF8;
            public INIUtil()
            {
                if (!File.Exists(this.iniFile))
                {
                    File.Create(this.iniFile).Close();
                }
            }
            public INIUtil(string file)
            {
                this.iniFile = file;
                if (!File.Exists(file))
                {
                    File.Create(file).Close();
                }
            }
            /// <summary>
            /// 批量读取键值对
            /// </summary>
            /// <returns>返回INI配置结构体列表,单独结构可以通过索引获取或设置</returns>
            public System.Collections.Generic.List<IniStruct> ReadValues()
            {
                return ReadValues(this.iniFile);
            }
    
            public string ReadValue(string key)
            {
                string comments = "";
                return ReadValue(this.iniFile, key, "", ref comments);
            }
            public string ReadValue(string key, string section)
            {
                string comments = "";
                return ReadValue(this.iniFile, key, section, ref comments);
            }
            public string ReadValue(string key, string section, ref string comments)
            {
                if (string.IsNullOrEmpty(this.iniFile)) throw new System.Exception("没有设置文件路径");
                return ReadValue(this.iniFile, key, section, ref comments);
            }
            public static string ReadValue(string file, string key, string section)
            {
                string comments = "";
                return ReadValue(file, key, section, ref comments);
            }
            private static string GetText(string file)
            {
                string content = File.ReadAllText(file);
                if (content.Contains("�"))
                {
                    Encoding = System.Text.Encoding.GetEncoding("GBK");
                    content = File.ReadAllText(file, System.Text.Encoding.GetEncoding("GBK"));
                }
                return content;
            }
            public static string ReadValue(string file, string key, string section, ref string comments)
            {
                if (string.IsNullOrEmpty(section))
                {
                    //2018-11-19
                    section = defaultSection;
                }
                string valueText = "";
                string content = GetText(file);
                if (!string.IsNullOrEmpty(section)) //首先遍历节点
                {
                    MatchCollection matches = new Regex(@"\[\s*(?'section'[^\[\]\s]+)\s*\]").Matches(content);
                    if (matches.Count <= 0) return "";
                    Match currMatch = null;
                    Match tailMatch = null;
                    foreach (Match match in matches)
                    {
                        string match_section = match.Groups["section"].Value;
                        if (match_section.ToLower() == section.ToLower())
                        {
                            currMatch = match;
                            continue;
                        }
                        else if (currMatch != null)
                        {
                            tailMatch = match;
                            break;
                        }
    
                    }
                    valueText = content.Substring(currMatch.Index + currMatch.Length, (tailMatch != null ? tailMatch.Index : content.Length) - currMatch.Index - currMatch.Length);//截取有效值域
    
    
                }
                else
                    valueText = content;
                string[] lines = valueText.Split(new string[] { "\r\n" }, System.StringSplitOptions.None);
                foreach (string line in lines)
                {
                    if (string.IsNullOrEmpty(line) || line == "\r\n" || line.Contains("["))
                        continue;
                    string valueLine = line;
                    if (line.Contains(";"))
                    {
                        string[] seqPairs = line.Split(';');
                        if (seqPairs.Length > 1)
                            comments = seqPairs[1].Trim();
                        valueLine = seqPairs[0];
                    }
                    string[] keyValuePairs = valueLine.Split('=');
                    string line_key = keyValuePairs[0];
                    string line_value = "";
                    if (keyValuePairs.Length > 1)
                    {
                        line_value = keyValuePairs[1];
                    }
                    if (key.ToLower().Trim() == line_key.ToLower().Trim())
                    {
                        return line_value;
                    }
                }
                return "";
            }
            public static System.Collections.Generic.List<IniStruct> ReadValues(string file)
            {
                System.Collections.Generic.List<IniStruct> iniStructList = new System.Collections.Generic.List<IniStruct>();
                string content = GetText(file);
                System.Text.RegularExpressions.MatchCollection matches = new System.Text.RegularExpressions.Regex(@"\[\s*(?'section'[^\[\]\s]+)\s*\](?'valueContent'[^\[\]]*)").Matches(content);
                foreach (System.Text.RegularExpressions.Match match in matches)
                {
                    IniStruct iniStruct = new IniStruct();
                    string match_section = match.Groups["section"].Value;
                    string match_value = match.Groups["valueContent"].Value;
                    iniStruct.Section = match_section;
    
                    string[] lines = match_value.Split(new string[] { "\r\n" }, System.StringSplitOptions.None);
                    foreach (string line in lines)
                    {
                        if (string.IsNullOrEmpty(line) || line == "\r\n" || line.Contains("["))
                            continue;
                        string comments = "";//注释
                        string valueLine = line;
                        if (line.Contains(";"))
                        {
                            string[] seqPairs = line.Split(';');
                            if (seqPairs.Length > 1)
                                comments = seqPairs[1].Trim();
                            valueLine = seqPairs[0];
                        }
                        string[] keyValuePairs = valueLine.Split('=');
                        string line_key = keyValuePairs[0];
                        string line_value = "";
                        if (keyValuePairs.Length > 1)
                        {
                            line_value = keyValuePairs[1];
                        }
                        iniStruct.Add(line_key, line_value, comments);
                    }
                    iniStructList.Add(iniStruct);
                }
    
                return iniStructList;
            }
            public void Write(string key, string value)
            {
                Write("", key, value, null);
            }
            public void Write(string section, string key, string value)
            {
                Write(section, key, value, null);
            }
            public void Write(string section, string key, string value, string comment)
            {
                Write(this.iniFile, section, key, value, comment);
            }
            public static void Write(string file, string section, string key, string value, string comment)
            {
                if (string.IsNullOrEmpty(section))
                {
                    //2018-11-19
                    section = defaultSection;
                }
                bool isModified = false;
                System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
                string content = GetText(file);
                System.Text.StringBuilder newValueContent = new System.Text.StringBuilder();
                #region 写入了节点
                if (!string.IsNullOrEmpty(section))
                {
                    string pattern = string.Format(@"\[\s*{0}\s*\](?'valueContent'[^\[\]]*)", section);
                    MatchCollection matches = new Regex(pattern).Matches(content);
                    if (matches.Count <= 0)
                    {
                        stringBuilder.AppendLine(string.Format("[{0}]", section)); //检查节点是否存在
                        stringBuilder.AppendLine(string.Format("{0}={1}{2}", key, value, !string.IsNullOrEmpty(comment) ? (";" + comment) : ""));
                        stringBuilder.AppendLine(content);
                        isModified = true;
                    }
                    else
                    {
                        Match match = matches[0];
                        string valueContent = match.Groups["valueContent"].Value;
                        string[] lines = valueContent.Split(new string[] { "\r\n" }, System.StringSplitOptions.None);
    
                        newValueContent.AppendLine(string.Format("[{0}]", section));
                        foreach (string line in lines)
                        {
                            if (string.IsNullOrEmpty(line) || line == "\r\n" || line.Contains("["))
                            {
                                continue;
                            }
    
                            string valueLine = line;
                            string comments = "";
                            if (line.Contains(";"))
                            {
                                string[] seqPairs = line.Split(';');
                                if (seqPairs.Length > 1)
                                    comments = seqPairs[1].Trim();
                                valueLine = seqPairs[0];
                            }
                            string[] keyValuePairs = valueLine.Split('=');
                            string line_key = keyValuePairs[0];
                            string line_value = "";
                            if (keyValuePairs.Length > 1)
                            {
                                line_value = keyValuePairs[1];
                            }
                            if (key.ToLower().Trim() == line_key.ToLower().Trim())
                            {
                                isModified = true;
                                newValueContent.AppendLine(string.Format("{0}={1}{2}", key, value, !string.IsNullOrEmpty(comment) ? (";" + comment) : ""));
                            }
                            else
                            {
                                newValueContent.AppendLine(line);
                            }
    
    
                        }
                        if (!isModified)
                            newValueContent.AppendLine(string.Format("{0}={1}{2}", key, value, !string.IsNullOrEmpty(comment) ? (";" + comment) : ""));
                        string newVal = newValueContent.ToString();
                        content = content.Replace(match.Value, newVal);
                        stringBuilder.Append(content);
    
                    }
                }
                #endregion
                #region 没有指明节点
                else
                {
                    string valueText = "";
                    //如果节点为空
                    MatchCollection matches = new Regex(@"\[\s*(?'section'[^\[\]\s]+)\s*\](?'valueContent'[^\[\]]*)").Matches(content);
                    if (matches.Count > 0)
                    {
                        valueText = matches[0].Index > 0 ? content.Substring(0, matches[0].Index) : "";
                        string[] lines = valueText.Split(new string[] { "\r\n" }, System.StringSplitOptions.None);
                        foreach (string line in lines)
                        {
                            if (string.IsNullOrEmpty(line) || line == "\r\n" || line.Contains("["))
                            {
                                continue;
                            }
    
                            string valueLine = line;
                            string comments = "";
                            if (line.Contains(";"))
                            {
                                string[] seqPairs = line.Split(';');
                                if (seqPairs.Length > 1)
                                    comments = seqPairs[1].Trim();
                                valueLine = seqPairs[0];
                            }
                            string[] keyValuePairs = valueLine.Split('=');
                            string line_key = keyValuePairs[0];
                            string line_value = "";
                            if (keyValuePairs.Length > 1)
                            {
                                line_value = keyValuePairs[1];
                            }
                            if (key.ToLower().Trim() == line_key.ToLower().Trim())
                            {
                                isModified = true;
                                newValueContent.AppendLine(string.Format("{0}={1}{2}", key, value, !string.IsNullOrEmpty(comment) ? (";" + comment) : ""));
                            }
                            else
                            {
                                newValueContent.AppendLine(line);
                            }
    
    
                        }
                        if (!isModified)
                            newValueContent.AppendLine(string.Format("{0}={1}{2}", key, value, !string.IsNullOrEmpty(comment) ? (";" + comment) : ""));
                        string newVal = newValueContent.ToString();
                        content = content.Replace(valueText, newVal);
                        stringBuilder.Append(content);
                    }
                    else
                    {
                        stringBuilder.AppendLine(string.Format("{0}={1}{2}", key, value, !string.IsNullOrEmpty(comment) ? (";" + comment) : ""));
                    }
                }
                #endregion
                System.IO.File.WriteAllText(file, stringBuilder.ToString(), Encoding);
            }
    
            /**
              * 持久化选中的图纸信息
              * */
            public void LocalStorageVo(object sender)
            {
                Type t = sender.GetType();//获得该类的Type
                                                      //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了
                foreach (PropertyInfo pi in t.GetProperties())
                {
                    object value = pi.GetValue(sender, null);//用pi.GetValue获得值
                    if(null == value)
                    {
                        value = new object();
                    }
                    //获得属性的名字,后面就可以根据名字判断来进行些自己想要的操作
                    string name = pi.Name;
                    this.Write(name, value.ToString());
                }
            }
        }
        public class IniStruct : System.Collections.IEnumerable
        {
    
            private System.Collections.Generic.List<string> _commentList;
            public IniStruct()
            {
                this._keyValuePairs = new System.Collections.Generic.SortedList<string, string>();
                _commentList = new System.Collections.Generic.List<string>();
            }
            public string GetComment(string key)
            {
                if (this._keyValuePairs.ContainsKey(key))
                {
                    int index = this._keyValuePairs.IndexOfKey(key);
                    return this._commentList[index];
                }
                return "";
            }
            public string this[int index]
            {
                get
                {
                    if (this._keyValuePairs.Count > index)
                        return this._keyValuePairs.Values[index];
                    else return "";
                }
                set
                {
                    if (this._keyValuePairs.Count > index)
                        this._keyValuePairs.Values[index] = value;
                }
            }
            public string this[string key]
            {
                get
                {
                    if (this._keyValuePairs.ContainsKey(key))
                        return this._keyValuePairs[key];
                    else return "";
                }
                set
                {
                    if (this._keyValuePairs.ContainsKey(key))
                        this._keyValuePairs[key] = value;
                }
            }
            public string Section { get; set; }
            private System.Collections.Generic.SortedList<string, string> _keyValuePairs;
            public void Add(string key, string value, string commont)
            {
                this._keyValuePairs.Add(key, value);
                this._commentList.Add(commont);
            }
            public override string ToString()
            {
                return string.Format("{0}", this.Section);
            }
    
            public bool ContainKey(string key)
            {
                return this._keyValuePairs.ContainsKey(key);
            }
    
            public System.Collections.IEnumerator GetEnumerator()
            {
                return this._keyValuePairs.GetEnumerator();
            }
        }
    }
    
    

    其中FileUtil.GetAssemblyPath()是获取项目运行时当前目录路径。我们也可以换掉iniFile为其它路径,代码如下:

    	 /// <summary>
            /// 获取Assembly的运行路径
            /// </summary>
            ///<returns></returns>
            public static string GetAssemblyPath()
            {
                string _CodeBase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
    
                _CodeBase = _CodeBase.Substring(8, _CodeBase.Length - 8);    // 8是file:// 的长度
    
                string[] arrSection = _CodeBase.Split(new char[] { '/' });
    
                string _FolderPath = "";
                for (int i = 0; i < arrSection.Length - 1; i++)
                {
                    _FolderPath += arrSection[i] + "/";
                }
    
                return _FolderPath;
            }
    

    api

    ReadValue(string key)

    读取默认的main节名下键值。

    ReadValue(string key, string section)

    指定节名。读取键值

    ReadValues()

    读取所有的键值对

    Write(string key, string value)

    写键值对,默认在main下

    Write(string section, string key, string value)

    指定节名,保存健值对

    使用方法

    初始化工具类
    2个构造方法,一个传配置文件路径参数,一个默认。

    INIUtil iniUtil = new INIUtil();
    //或者
    INIUtil  iniUtil = new INIUtil(@"D:\test");
    

    默认将key-value保存到节名(section)为main的区域下,当然我们可以指定保存其它节名(section)。
    取值:string name= iniUtil.ReadValue(“name”);
    保存值:iniUtil.Write(“name”, “张三”);

    展开全文
  • c# winform程序读写ini配置文件

    千次阅读 2020-07-07 18:21:59
    C# winform读写ini文件 https://blog.csdn.net/source0573/article/details/49668079 c# winform程序读写ini配置文件 https://www.cnblogs.com/falcon-fei/p/9849868.html 背景:本来准备使用settings.settings...
  • 现在很多系统程序都通过配置文件来进行一些基本配置,INI就是其中一种,该资源包括INI的创建和读写权限功能,简单易懂没有连接数据库,使用winform
  • winform 读写.ini 文件

    2017-05-17 19:24:11
    1、ini文件读写helper类 public class IniInfo { //调用API函数 [DllImport("kernel32")] private static extern bool WritePrivateProfileString(string section, string key, string val, str
  • 1 class WY_INI 2 { 3 static string IniFileName; 4 static char[] TrimChar = { ' ', '\t' }; 5 public string[] GetSects() 6 { 7 ...
  • C#读写INI文件

    千次阅读 2021-10-15 14:04:38
    保存配置的方式有很多种,前面写了xml文件,这篇来介绍下另一种方式:ini文件。 为什么要用ini文件呢,相对xml来说,ini文件的数据结构看起来其实并不占优势,而且现在基本也都是用xml来保存;但是ini文件呢,...
  • C# Winform读取ini文件

    2012-09-10 15:34:00
    5,读取ini文件 private void ReadIni() { StringBuilder temp = new StringBuilder(); GetPrivateProfileString("DataBase", "DBSource", "", temp, 255, path); string source = temp.ToString(); ...
  • C# winform 读取修改配置文件

    热门讨论 2012-05-22 15:20:59
    通过按钮,读取配置文件,并修改自定义配置文件appSettings中的值.这是一个很简单的dome.
  • 利用.NET平台提供的kernel32.dll来操作ini文件,进行了一点点更改,主要展示怎样操作ini文件和dadagridview 的联合操作
  • 如何用csharp读写INI文件的办法 如何用csharp读写INI文件的办法 如何用csharp读写INI文件的办法
  • 封装了一小段代码, 调用系统接口, 操作配置文件. 一般用于 .ini 文件, 或者其它键值对格式的配置文件
  • 学习用C#中操作ini文件过程中,在网上查了很多文章,但是感觉自己基础太薄弱,对各位大神发的文章不是特别理解,摸索了很久也才只学会了创建ini文件和读写ini文件。下面给出一个我写的小例子。 首先,建立一个...
  • winform读写.ini文件

    千次阅读 2012-04-13 09:28:25
    3、读取.ini StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString("Setup","UserName","",temp,255, Application.StartupPath+"\\mcs.ini"); userno.Text = temp.ToString(); ...
  • ini文件读写类库

    2018-05-31 14:47:33
    ini文件读写类库,包含所有的对ini文件读写操作,亲测可用
  • C#winform 读写INI文件,源码,有演示介绍。(演示程序为vs2012)
  • winform读写ini配置文件

    2011-07-14 11:29:27
     ReadIniFile file = new ReadIniFile(@"D:test.INI");  string inifilename = file.FileName();  bool isexist = file.ExistINIFile();  string strConn = "";  if (file.ExistINIFile())  {  iniserver = ...
  • ini文件和fash实现的登录对话框,对话框还带有fash,swf文件的winform的flash实现。
  • publicclassINIOperationClass{#regionINI文件操作/**针对INI文件的API操作方法,其中的节点(Section)、键(KEY)都不区分大小写*如果指定的INI文件不存在,会自动创建该文件。**CharSet定义的时候使用了什么类型,在...
  •  ReadIniFile file = new ReadIniFile(@"D:test.INI");  string inifilename = file.FileName();  bool isexist = file.ExistINIFile();  string strConn = "";  if (file.ExistINIFile())  {  iniserver = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 588
精华内容 235
关键字:

winform读取ini文件