zoukankan      html  css  js  c++  java
  • 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);
    View Code

    读写方法:

     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         }
    View Code

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

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

    写入内容:

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

    读取

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

    删除节点/键

    INIHelper.DeleteKey("s1", "2", filePath);//删除节点s1中key为2的值
    INIHelper.DeleteSection("s1", filePath);//删除节点s2

     

    完整代码:https://pan.baidu.com/s/1-jQ7v5cDNkScrKryGu9I1A

    原文地址:https://www.cnblogs.com/xiesong/p/10320893.html

  • 相关阅读:
    自定义组件要加@click方法
    绑定样式
    647. Palindromic Substrings
    215. Kth Largest Element in an Array
    448. Find All Numbers Disappeared in an Array
    287. Find the Duplicate Number
    283. Move Zeroes
    234. Palindrome Linked List
    202. Happy Number
    217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/xiesong/p/10320893.html
Copyright © 2011-2022 走看看