• 欢迎访问我爱CSharp学习网,这里有最新最全的C#书籍,C#视频。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏我爱C#学习网吧
  • 推荐使用最新版Chrome浏览器和火狐浏览器访问本网站

C# 如何对 ini 文件操作(含源码)

C#杂烩 52csharp 725次浏览 0个评论 扫描二维码

点击上方蓝字,可快速关注我们)


来源:polk6

链接:cnblogs.com/polk6/p/6052908.html


介绍C#如何对ini文件进行读写操作,C#可以通过调用【kernel32.dll】文件中的 WritePrivateProfileString()和GetPrivateProfileString()函数分别对ini文件进行读和写操作。包括:读取key的值、保存key的值、读取所有section、读取所有key、移除section、移除key等操作。


1. ini文件介绍


ini文件常用于存储各类应用的配置信息,而内部的文件结构主要包括三个概念:section、key和value。


其中section为各独立的区域块,名称可以为英文、中文。


C# 如何对 ini 文件操作(含源码)


2. GetPrivateProfileString()函数 :读取操作


C#可以通过调用【kernel32.dll】文件中的 GetPrivateProfileString()函数对ini文件进行读取操作。


官方API:https://msdn.microsoft.com/zh-cn/library/ms724353.aspx


函数签名:


[DllImport(“kernel32”)]

private static extern int GetPrivateProfileString(string sectionName, string key, string defaultValue, byte[] returnBuffer, int size, string filePath); 


成员:


sectionName  {string | null}:要读区的区域名。若传入null值,第4个参数returnBuffer将会获得所有的section name。


key {string | null}:key的名称。若传入null值,第4个参数returnBuffer将会获得所有的指定sectionName下的所有key name。


defaultValue {string}:key没找到时的返回值。


returnBuffer {byte[]}:key所对应的值。


filePath {string}:ini文件路径。


支持的操作:


1) 获取指定key的值。


2) 获取ini文件所有的section名称。


3) 获取指定section下的所有key名称。


2.1 获取指定key的值


/// <summary>

/// 根据Key读取Value

/// </summary>

/// <param name=”sectionName”>section名称</param>

/// <param name=”key”>key的名称</param>

/// <param name=”filePath”>文件路径</param>

public static string GetValue(string sectionName, string key, string filePath)

{

    byte[] buffer = new byte[2048];

    int length = GetPrivateProfileString(sectionName, key, “发生错误”, buffer,999, filePath);

    string rs = System.Text.UTF8Encoding.Default.GetString(buffer, 0, length);

    return rs;

}


2.2 获取ini文件所有的section名称


注意:中文名称的section要进行转码。


/// <summary>

/// 获取ini文件内所有的section名称

/// </summary>

/// <param name=”filePath”>文件路径</param>

/// <returns>返回一个包含section名称的集合</returns>

public static List<string> GetSectionNames(string filePath)

{

    byte[] buffer = new byte[2048];

    int length = GetPrivateProfileString(null, “”, “”, buffer, 999, filePath);

    String[] rs = System.Text.UTF8Encoding.Default.GetString(buffer, 0, length).Split(new string[] { “” },StringSplitOptions.RemoveEmptyEntries);

    return rs.ToList();

}


2.3 获取指定section下的所有key名称


同样要对中问名称的key进行转码。


/// <summary>

/// 获取指定section内的所有key

/// </summary>

/// <param name=”sectionName”>section名称</param>

/// <param name=”filePath”>文件路径</param>

/// <returns>返回一个包含key名称的集合</returns>

public static List<string> GetKeys(string sectionName, string filePath)

{

    byte[] buffer = new byte[2048];

    int length = GetPrivateProfileString(sectionName,null,””, buffer, 999, filePath);

    String[] rs = System.Text.UTF8Encoding.Default.GetString(buffer, 0, length).Split(new string[] { “” }, StringSplitOptions.RemoveEmptyEntries);

    return rs.ToList();

}


3. WritePrivateProfileString()函数:写入操作


C#可以通过调用【kernel32.dll】文件中的 WritePrivateProfileString()函数对ini文件进行写入操作。


官方API:https://msdn.microsoft.com/zh-cn/library/ms725501.aspx


函数签名:


[DllImport(“kernel32”)]

private static extern long WritePrivateProfileString(string sectionName, string key, string value, string filePath);


成员:


sectionName {string}:要写入的区域名。


key {string | null}:key的名称。若传入null值,将移除指定的section。


value {string | null}:设置key所对应的值。若传入null值,将移除指定的key。


filePath {string}:ini文件路径。


支持的操作:


1) 创建/设置key的值。


2) 移除指定的section。


3) 移除指定的key。


3.1 创建/设置key的值


注意:若此key不存在将会创建,否则就为修改此key的值。


/// <summary>

/// 保存内容到ini文件

/// <para>若存在相同的key,就覆盖,否则就增加</para>

/// </summary>

/// <param name=”sectionName”>section名称</param>

/// <param name=”key”>key的名称</param>

/// <param name=”value”>存储的值</param>

/// <param name=”filePath”>文件路径</param>

public static bool SetValue(string sectionName, string key, string value, string filePath)

{

    int rs = (int)WritePrivateProfileString(sectionName, key, value, filePath);

    return rs > 0;

}


3.2 移除指定的section


说明:key参数传入null就为移除指定的section。


/// <summary>

/// 移除指定的section

/// </summary>

/// <param name=”sectionName”>section名称</param>

/// <param name=”filePath”>文件路径</param>

/// <returns></returns>

public static bool RemoveSection(string sectionName, string filePath)

{

    int rs = (int)WritePrivateProfileString(sectionName, null, “”, filePath);

    return rs > 0;

}


3.3 移除指定的key


说明:value参数传入null就为移除指定的key。


/// <summary>

/// 移除指定的key

/// </summary>

/// <param name=”sectionName”>section名称</param>

/// <param name=”filePath”>文件路径</param>

/// <returns></returns>

public static bool Removekey(string sectionName, string key, string filePath)

{

    int rs = (int)WritePrivateProfileString(sectionName, key, null, filePath);

    return rs > 0;

}


4. 源码下载


4.1 运行图


C# 如何对 ini 文件操作(含源码)


4.2 下载地址


百度网盘:http://pan.baidu.com/s/1dEQ3QuP


CSDN:http://download.csdn.net/detail/polk6/9684148


 

C# 如何对 ini 文件操作(含源码)


我爱CSharp学习网 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# 如何对 ini 文件操作(含源码)
喜欢 (2)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址