`
wsql
  • 浏览: 11790144 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

操作ini文件的公共类

 
阅读更多

以前我提供了一个操作ini文件的类,但是是VB.net版本。以下是我转载的一个C#版本的操作ini文件的类。

这里是一个通过调用Windows API来操作ini文件的一个公共类,并用托管代码进行了封装,提供了对ini文件的增删查改功能。

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

public class IniFiles
{
public delegate void EventHandler(object sender, EventArgs e);

public event EventHandler IniFileChanged;
public event EventHandler Initialization;
protected string IniFileName;

public string FileName
{
get
{
return IniFileName;
}
set
{
if (value != IniFileName)
{
IniFileName = value;
OnIniFileChanged(new EventArgs());
}
}
}
protected void OnIniFileChanged(EventArgs e)
{
if (IniFileChanged != null)
IniFileChanged(null, e);
}
protected void OnInitialization(EventArgs e)
{
if (Initialization != null)
Initialization(null, e);
}
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
/*
section: 要写入的段落名
key: 要写入的键,如果该key存在则覆盖写入
val: key所对应的值
filePath: INI文件的完整路径和文件名
*/

[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string defVal, System.Text.StringBuilder retVal, int size, string filePath);
/*
section:要读取的段落名
key: 要读取的键
defVal: 读取异常的情况下的缺省值
retVal: key所对应的值,如果该key不存在则返回空值
size: 值允许的大小
filePath: INI文件的完整路径和文件名

*/

/// <summary>
/// 构造方法
/// </summary>
/// <param name="INIPath">文件路径</param>
public IniFiles(string FileName)
{
IniFileName = FileName;
}
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
public void WriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, this.IniFileName);
}
/// <summary>
/// 删除指定段、键的值
/// </summary>
/// <param name="Section">要删除的值所在的段</param>
/// <param name="Key">要删除的值所在的键</param>
public void DeleteValue(string Section, string Key)
{
WritePrivateProfileString(Section, Key, null, this.IniFileName);
}
/// <summary>
/// 删除指定段的值
/// </summary>
/// <param name="Section">要删除的值所在的段</param>
public void DeleteValue(string Section)
{
WritePrivateProfileString(Section, null, null, this.IniFileName);
}
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
public string ReadValue(string Section, string Key, string Default)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section, Key, Default, temp, 500, this.IniFileName);
return temp.ToString();
}
/// <summary>
/// 验证文件是否存在
/// </summary>
/// <returns>布尔值</returns>
public bool ExistINIFile()
{
return File.Exists(IniFileName);
}
/// <summary>
/// 创建文件夹
/// </summary>
/// <param name="path">路径</param>
private void NewDirectory(String path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
/// <summary>
/// 添加一行注释
/// </summary>
/// <param name="Notes">注释</param>
public void AddNotes(string Notes)
{
string filename = IniFileName;
string path;
path = Directory.GetParent(filename).ToString();
NewDirectory(path);
FileStream fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.BaseStream.Seek(0, SeekOrigin.End);
sw.WriteLine(@";" + Notes);
sw.Flush();
sw.Close();
fs.Close();
sw.Dispose();
fs.Dispose();
}
/// <summary>
/// 添加一行文本
/// </summary>
/// <param name="Text">文本</param>
public void AddText(string Text)
{
string filename = IniFileName;
string path;
path = Directory.GetParent(filename).ToString();
NewDirectory(path);
FileStream fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.BaseStream.Seek(0, SeekOrigin.End);
sw.WriteLine(Text);
sw.Flush();
sw.Close();
fs.Close();
sw.Dispose();
fs.Dispose();
}

#region 重载
public void WriteValue(string Section, string Key, int Value)
{
WriteValue(Section, Key, Value.ToString());
}
public void WriteValue(string Section, string Key, Boolean Value)
{
WriteValue(Section, Key, Value.ToString());
}
public void WriteValue(string Section, string Key, DateTime Value)
{
WriteValue(Section, Key, Value.ToString());
}
public void WriteValue(string Section, string Key, object Value)
{
WriteValue(Section, Key, Value.ToString());
}
public int ReadValue(string Section, string Key, int Default)
{
return Convert.ToInt32(ReadValue(Section, Key, Default.ToString()));
}

public bool ReadValue(string Section, string Key, bool Default)
{
return Convert.ToBoolean(ReadValue(Section, Key, Default.ToString()));
}


public DateTime ReadValue(string Section, string Key, DateTime Default)
{
return Convert.ToDateTime(ReadValue(Section, Key, Default.ToString()));
}


public string ReadValue(string Section, string Key)
{
return ReadValue(Section, Key, "");
}
#endregion
}


分享到:
评论

相关推荐

    C#公共类通用类非常齐全

    INI文件操作辅助类(INIFileUtil.cs) 独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的Word...

    C#常用公共类源码(100多个)可以直接使用.rar

    ,加密解密,压缩解压缩,各种验证帮助类,图片,图片操作类,图片验证码,处理多媒体的公共类,处理枚举类,字符串,对象转换处理,帮助文档,序列化,异步线程,弹出消息类 ,数据展示控件绑定数据类,文件操作类,日历,日志,时间戳...

    aspnet公共类cs文件.rar

    枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类(RMBUtil.cs...

    C#公共通用类

    INI文件操作辅助类(INIFileUtil.cs) 独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的Word...

    C#公共类源代码 带帮助文档

    INI文件操作辅助类(INIFileUtil.cs) 独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的...

    ERP系统中几个好用的公共类

    ERP系统中几个好用的公共类,包含用于连接和操作数据库的DataBase类,用来实现控件绑定到数据库、键盘输入验证、生成单据编号等功能的CommonUse类,用于画统计图的的Char类以及用于读取ini文件用的OperatorFile类等

    WHC.OrderWater.Commons 伍华聪 公共类源码 类库 帮助文档

    INI文件操作辅助类(INIFileUtil.cs) 独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的...

    WHC.OrderWater.Commons公共类源码_文档[最新整理]

    INI文件操作辅助类(INIFileUtil.cs) 独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的...

    超级多的C#辅助类大全

    14. INI文件读写类 15. IP辅助类 16. Javascript 17. Json 18. JSON操作 19. JS操作 20. Lib 21. Mime 22. Net 23. NPOI 24. obj 25. packages 26. Path 27. PDF 28. Properties 29. QueryString ...

    c# 公用操作类库源码

    INI文件操作辅助类(INIFileUtil.cs) 独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的...

    Helper Master

    Public class INIFileHelper INI文件读写类。 Public class IpHelper 共用工具类 Public class JavaScriptHelper JavaScript客户端脚本输出帮助类 Public class JsonHelper JSON转换帮助类 Public class ...

    DotNet通用类库大全

    INI文件操作辅助类(INIFileUtil.cs) 独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的...

    DotNet公用类(超多附文档)

    11.INI文件操作辅助类(INIFileUtil.cs) 12.独立存储操作辅助类(IsolatedStorageHelper.cs) 13.序列号操作辅助类(Serializer.cs) 14.获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs)...

    WHC第三方控件

    11. INI文件操作辅助类(INIFileUtil.cs) 12. 独立存储操作辅助类(IsolatedStorageHelper.cs) 13. 序列号操作辅助类(Serializer.cs) 14. 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories....

    C#开发典型模块大全(光盘)第二部分

    2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端...

    网管教程 从入门到精通软件篇.txt

    CIN:OS/2改变控制文件用于跟踪INI文件中的变化 CLASS:Java类文件 CLP:Windows 剪贴板文件 CLL:Crick Software Clicker文件 CLS:Visual Basic类文件 CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;...

    C#开发典型模块大全

    2.2.1 INI文件的应用 28 2.2.2 线程的应用 30 2.2.3 在Socket中发送大容量的消息 30 2.2.4 将流序列化或反序列化为对象 31 2.2.5 用InnerList列表记录信息 31 2.3 设计过程 32 2.3.1 类库的设计 33 ...

    C#开发典型模块大全(光盘)

    2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端...

    C#开发典型模块大全(光盘)第一部分

    2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端...

    C# winform典型系统开发模板

     2.2.1 INI文件的应用 28  2.2.2 线程的应用 30  2.2.3 在Socket中发送大容量的消息 30  2.2.4 将流序列化或反序列化为对象 31  2.2.5 用InnerList列表记录信息 31  2.3 设计过程 32  ...

Global site tag (gtag.js) - Google Analytics