• C# 读写INI文件


    一、认识INI文件结构

    INI文件格式由节、键、值组成。

    [section]

    参数

    (键=值)

    name=value

     

     二、实操

    在开发中,有时会遇到对INI文件的读写操作。

    针对ini文件写了一个工具类。供大家参考。

    引用库函数:

     1 /// <summary>
     2         /// 为INI文件中指定的节点取得字符串
     3         /// </summary>
     4         /// <param name="lpAppName">欲在其中查找关键字的节点名称</param>
     5         /// <param name="lpKeyName">欲获取的项名</param>
     6         /// <param name="lpDefault">指定的项没有找到时返回的默认值</param>
     7         /// <param name="lpReturnedString">指定一个字串缓冲区,长度至少为nSize</param>
     8         /// <param name="nSize">指定装载到lpReturnedString缓冲区的最大字符数量</param>
     9         /// <param name="lpFileName">INI文件完整路径</param>
    10         /// <returns>复制到lpReturnedString缓冲区的字节数量,其中不包括那些NULL中止字符</returns>
    11         [DllImport("kernel32")]
    12         private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
    13 
    14         /// <summary>
    15         /// 修改INI文件中内容
    16         /// </summary>
    17         /// <param name="lpApplicationName">欲在其中写入的节点名称</param>
    18         /// <param name="lpKeyName">欲设置的项名</param>
    19         /// <param name="lpString">要写入的新字符串</param>
    20         /// <param name="lpFileName">INI文件完整路径</param>
    21         /// <returns>非零表示成功,零表示失败</returns>
    22         [DllImport("kernel32")]
    23         private static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);

    读写方法:

     1 /// <summary>
     2         /// 读取INI文件值
     3         /// </summary>
     4         /// <param name="section">节点名</param>
     5         /// <param name="key"></param>
     6         /// <param name="def">未取到值时返回的默认值</param>
     7         /// <param name="filePath">INI文件完整路径</param>
     8         /// <returns>读取的值</returns>
     9         public static string Read(string section, string key, string def, string filePath)
    10         {
    11             StringBuilder sb = new StringBuilder(1024);
    12             GetPrivateProfileString(section, key, def, sb, 1024, filePath);
    13             return sb.ToString();
    14         }
    15 
    16         /// <summary>
    17         /// 写INI文件值
    18         /// </summary>
    19         /// <param name="section">欲在其中写入的节点名称</param>
    20         /// <param name="key">欲设置的项名</param>
    21         /// <param name="value">要写入的新字符串</param>
    22         /// <param name="filePath">INI文件完整路径</param>
    23         /// <returns>非零表示成功,零表示失败</returns>
    24         public static int Write(string section, string key, string value, string filePath)
    25         {
    26             CheckPath(filePath);
    27             return WritePrivateProfileString(section, key, value, filePath);
    28         }
    29 
    30         /// <summary>
    31         /// 删除节
    32         /// </summary>
    33         /// <param name="section">节点名</param>
    34         /// <param name="filePath">INI文件完整路径</param>
    35         /// <returns>非零表示成功,零表示失败</returns>
    36         public static int DeleteSection(string section, string filePath)
    37         {
    38             return Write(section, null, null, filePath);
    39         }
    40 
    41         /// <summary>
    42         /// 删除键的值
    43         /// </summary>
    44         /// <param name="section">节点名</param>
    45         /// <param name="key">键名</param>
    46         /// <param name="filePath">INI文件完整路径</param>
    47         /// <returns>非零表示成功,零表示失败</returns>
    48         public static int DeleteKey(string section, string key, string filePath)
    49         {
    50             return Write(section, key, null, filePath);
    51         }

    在程序根目录创建一个INI文件:

    1 string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sys.ini");//在当前程序路径创建
    2 File.Create(filePath);//创建INI文件

    写入内容:

    1 //写入节点1
    2  INIHelper.Write("s1", "1", "a", filePath);
    3  INIHelper.Write("s1", "2", "b", filePath);
    4  INIHelper.Write("s1", "3", "c", filePath);
    5  //写入节点2
    6  INIHelper.Write("s2", "4", "d", filePath);
    7  INIHelper.Write("s2", "5", "e", filePath);
    8  //改节点值(就是重写一遍)
    9  INIHelper.Write("s1", "3", "c3", filePath);

    读取

    //读取节点1中的key为1的值
    string value = INIHelper.Read("s1", "1", "789", filePath);

    删除节点/键

    1 INIHelper.DeleteKey("s1", "2", filePath);//删除节点s1中key为2的值
    2 INIHelper.DeleteSection("s1", filePath);//删除节点s2
  • 相关阅读:
    Document
    Document
    Document
    Document
    Document
    Document
    Document
    Document
    C#中的委托是什么
    C# Lambda表达式Contains方法 like
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/12461382.html
Copyright © 2020-2023  润新知