IniConfigHelper.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Runtime.InteropServices;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace TeamAAS_VP.Core
  9. {
  10. /// <summary>
  11. /// INI配置文件操作类(使用 Windows API)
  12. /// </summary>
  13. public class IniConfigHelper
  14. {
  15. private readonly string _filePath;
  16. [DllImport("kernel32")]
  17. private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
  18. [DllImport("kernel32")]
  19. private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
  20. public IniConfigHelper(string iniFileName = "config.ini")
  21. {
  22. // 判断路径1
  23. if (IsPathContainingDirectory(iniFileName))
  24. {
  25. if (!Directory.Exists(System.IO.Path.GetDirectoryName(iniFileName)))
  26. {
  27. Directory.CreateDirectory(Path.GetDirectoryName(iniFileName));
  28. }
  29. _filePath=iniFileName;
  30. }
  31. else
  32. {
  33. // 配置文件存储路径(应用程序所在目录)
  34. _filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, iniFileName);
  35. }
  36. // 如果文件不存在则创建
  37. if (!File.Exists(_filePath))
  38. {
  39. File.Create(_filePath).Close();
  40. }
  41. }
  42. public void WriteValue(string section, string key, string value)
  43. {
  44. WritePrivateProfileString(section, key, value, _filePath);
  45. }
  46. public string ReadValue(string section, string key, string defaultValue = "")
  47. {
  48. var sb = new StringBuilder(255);
  49. GetPrivateProfileString(section, key, defaultValue, sb, 255, _filePath);
  50. return sb.ToString();
  51. }
  52. /// <summary>
  53. /// 判断路径是否包含文件夹路径
  54. /// </summary>
  55. /// <param name="path"></param>
  56. /// <returns></returns>
  57. public bool IsPathContainingDirectory(string path)
  58. {
  59. // 获取文件夹路径部分
  60. string directory = Path.GetDirectoryName(path);
  61. // 如果目录部分不为空,则表示路径包含文件夹路径
  62. return !string.IsNullOrEmpty(directory);
  63. }
  64. }
  65. }