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. namespace Sign_plate_management_system
    8. {
    9. public static class IniFileUtils
    10. {
    11. public static string FilePath { get; set; }
    12. /// <summary>
    13. /// 读操作:
    14. /// </summary>
    15. /// <param name="section">节</param>
    16. /// <param name="key">键</param>
    17. /// <param name="defVal">未读取到的默认值</param>
    18. /// <param name="value">读取到的值,如果该key不存在则返回空值</param>
    19. /// <param name="size">值的大小</param>
    20. /// <param name="filePath">文件路径</param>
    21. /// <returns></returns>
    22. [DllImport("kernel32")]
    23. private static extern int GetPrivateProfileString(string section, string key, string value, StringBuilder retVal, int size, string filePath);
    24. /// <summary>
    25. /// 写操作:
    26. /// </summary>
    27. /// <param name="section">节</param>
    28. /// <param name="key">键</param>
    29. /// <param name="val">值</param>
    30. /// <param name="filePath">文件路径</param>
    31. /// <returns></returns>
    32. [DllImport("kernel32")]
    33. private static extern long WritePrivateProfileString(string section, string key, string value, string filePath);
    34. /// <summary>
    35. /// 验证文件是否存在
    36. /// </summary>
    37. /// <returns>布尔值</returns>
    38. public static bool ExistFile(string filepath)
    39. {
    40. return File.Exists(filepath);
    41. }
    42. /// <summary>
    43. /// 验证文件是否存在
    44. /// </summary>
    45. /// <returns>布尔值</returns>
    46. public static bool ExistFile()
    47. {
    48. return File.Exists(FilePath);
    49. }
    50. /// <summary>
    51. /// 读取int文件
    52. /// </summary>
    53. /// <param name="section">节</param>
    54. /// <param name="key">键</param>
    55. /// <param name="defvalue">未读取到值时的默认值</param>
    56. /// <param name="filepath">文件路径</param>
    57. /// <returns>非零表示成功,零表示失败</returns>
    58. public static string ReadIni(string section, string key, string defvalue, string filepath)
    59. {
    60. StringBuilder retvalue = new StringBuilder();
    61. GetPrivateProfileString(section, key, defvalue, retvalue, 256, filepath);
    62. return retvalue.ToString();
    63. }
    64. /// <summary>
    65. /// 读取int文件
    66. /// </summary>
    67. /// <param name="section">节</param>
    68. /// <param name="key">键</param>
    69. /// <param name="defvalue">未读取到值时的默认值</param>
    70. /// <param name="filepath">文件路径</param>
    71. /// <returns>键值</returns>
    72. public static string ReadIni(string section, string key, string defvalue)
    73. {
    74. StringBuilder retvalue = new StringBuilder(1024);
    75. GetPrivateProfileString(section, key, defvalue, retvalue, 1024, FilePath);
    76. return retvalue.ToString();
    77. }
    78. /// <summary>
    79. /// 写入int文件
    80. /// </summary>
    81. /// <param name="section">节</param>
    82. /// <param name="key">键</param>
    83. /// <param name="value">值</param>
    84. /// <param name="filepath">文件路径</param>
    85. /// <returns></returns>
    86. public static long WriteIni(string section, string key, string value, string filepath)
    87. {
    88. return WritePrivateProfileString(section, key, value, filepath);
    89. }
    90. /// <summary>
    91. /// 写入int文件
    92. /// </summary>
    93. /// <param name="section">节</param>
    94. /// <param name="key">键</param>
    95. /// <param name="value">值</param>
    96. /// <returns></returns>
    97. public static long WriteIni(string section, string key, string value)
    98. {
    99. return WritePrivateProfileString(section, key, value, FilePath);
    100. }
    101. /// <summary>
    102. /// 删除节
    103. /// </summary>
    104. /// <param name="section">节</param>
    105. /// <param name="filepath">文件路径</param>
    106. /// <returns></returns>
    107. public static long DeleteSection(string section, string filepath)
    108. {
    109. return WritePrivateProfileString(section, null, null, filepath);
    110. }
    111. /// <summary>
    112. /// 删除节
    113. /// </summary>
    114. /// <param name="section">节</param>
    115. /// <returns></returns>
    116. public static long DeleteSection(string section)
    117. {
    118. return WritePrivateProfileString(section, null, null ,FilePath);
    119. }
    120. /// <summary>
    121. /// 删除键
    122. /// </summary>
    123. /// <param name="section">节</param>
    124. /// <param name="key">键</param>
    125. /// <param name="filepath">文件路径</param>
    126. /// <returns></returns>
    127. public static long DeleteKey(string section, string key, string filepath)
    128. {
    129. return WritePrivateProfileString(section, key, null, filepath);
    130. }
    131. /// <summary>
    132. /// 删除键
    133. /// </summary>
    134. /// <param name="section">节</param>
    135. /// <param name="key">键</param>
    136. /// <returns></returns>
    137. public static long DeleteKey(string section, string key)
    138. {
    139. return WritePrivateProfileString(section, key, null, FilePath);
    140. }
    141. }
    142. }