QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 1380|回复: 0

[C#/.NET] C#中winform程序读写ini配置文件

[复制链接]

等级头衔

积分成就    金币 : 2841
   泡泡 : 1516
   精华 : 6
   在线时间 : 1294 小时
   最后登录 : 2024-11-21

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老

联系方式
发表于 2023-1-23 13:57:45 | 显示全部楼层 |阅读模式
       使用settings.settings来保存数据库配置等信息的。但是设置为“应用程序”级别,就没法方便的用 Properties.Settings.Default.Save() 更改保存。且没法在程序不重启的情况下应用修改后的配置。如果设置为“用户”级别,就存在配置信息保存到appData文件夹下被清空缓存失效的风险。因此回过头来选择ini来保存这些配置信息。$ `" m; M0 X' B7 |7 A: O! d$ q- p7 ^
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Runtime.InteropServices;
  7. namespace data_migration_desk.utils
  8. {
  9.     // INI文件操作类
  10.     class IniFileHelper
  11.     {
  12.         string strIniFilePath;  // ini配置文件路径
  13.         // 返回0表示失败,非0为成功
  14.         [DllImport("kernel32", CharSet = CharSet.Auto)]
  15.         private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
  16.         // 返回取得字符串缓冲区的长度
  17.         [DllImport("kernel32", CharSet = CharSet.Auto)]
  18.         private static extern long GetPrivateProfileString(string section, string key, string strDefault, StringBuilder retVal, int size, string filePath);
  19.         [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
  20.         public static extern int GetPrivateProfileInt(string section, string key, int nDefault, string filePath);
  21.         /// <summary>
  22.         /// 无参构造函数
  23.         /// </summary>
  24.         /// <returns></returns>
  25.         public IniFileHelper()
  26.         {
  27.             this.strIniFilePath = Directory.GetCurrentDirectory() + "\\Properties\\sysconfig.ini";
  28.         }
  29.         /// <summary>
  30.         /// 有参构造函数
  31.         /// </summary>
  32.         /// <param name="strIniFilePath">ini配置文件路径</param>
  33.         /// <returns></returns>
  34.         public IniFileHelper(string strIniFilePath)
  35.         {
  36.             if (strIniFilePath != null)
  37.             {
  38.                 this.strIniFilePath = strIniFilePath;
  39.             }
  40.         }
  41.         /// <summary>
  42.         /// 获取ini配置文件中的字符串
  43.         /// </summary>
  44.         /// <param name="section">节名</param>
  45.         /// <param name="key">键名</param>
  46.         /// <param name="strDefault">默认值</param>
  47.         /// <param name="retVal">结果缓冲区</param>
  48.         /// <param name="size">结果缓冲区大小</param>
  49.         /// <returns>成功true,失败false</returns>
  50.         public bool GetIniString(string section, string key, string strDefault, StringBuilder retVal, int size)
  51.         {
  52.             long liRet = GetPrivateProfileString(section, key, strDefault, retVal, size, strIniFilePath);
  53.             return (liRet >= 1);
  54.         }
  55.         /// <summary>
  56.         /// 获取ini配置文件中的整型值
  57.         /// </summary>
  58.         /// <param name="section">节名</param>
  59.         /// <param name="key">键名</param>
  60.         /// <param name="nDefault">默认值</param>
  61.         /// <returns></returns>
  62.         public int GetIniInt(string section, string key, int nDefault)
  63.         {
  64.             return GetPrivateProfileInt(section, key, nDefault, strIniFilePath);
  65.         }
  66.         /// <summary>
  67.         /// 往ini配置文件写入字符串
  68.         /// </summary>
  69.         /// <param name="section">节名</param>
  70.         /// <param name="key">键名</param>
  71.         /// <param name="val">要写入的字符串</param>
  72.         /// <returns>成功true,失败false</returns>
  73.         public bool WriteIniString(string section, string key, string val)
  74.         {
  75.             long liRet = WritePrivateProfileString(section, key, val, strIniFilePath);
  76.             return (liRet != 0);
  77.         }
  78.         /// <summary>
  79.         /// 往ini配置文件写入整型数据
  80.         /// </summary>
  81.         /// <param name="section">节名</param>
  82.         /// <param name="key">键名</param>
  83.         /// <param name="val">要写入的数据</param>
  84.         /// <returns>成功true,失败false</returns>
  85.         public bool WriteIniInt(string section, string key, int val)
  86.         {
  87.             return WriteIniString(section, key, val.ToString());
  88.         }
  89.     }
  90. }
读取:
  }+ c2 r' t0 l5 o6 e! x
  1.   IniFileHelper iniFileHelper = new IniFileHelper();
  2.             StringBuilder sb = new StringBuilder(60);
  3.             iniFileHelper.GetIniString("tokeninfo", "apiUrl", "", sb, sb.Capacity);
  4.             string aaa = sb.ToString();
写入:: C) m6 M; B$ m" d5 S
  1.   IniFileHelper iniFileHelper = new IniFileHelper();
  2.             iniFileHelper.WriteIniString("tokeninfo", "apiUrl", "newString");
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2024-11-21 21:05

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表