***************************************************

更多精彩,欢迎进入:http://shop115376623.taobao.com

***************************************************

/*
========================================================================

C# 对Ini文件操作(C# ini文件操作类)
[IniFiles.cs]
= =蝶晓梦整理了好久,拿出来分享
注意,不要用相对路径,要用绝对路径,否则有几个函数会把文件建立到“C:\Windows”目录下
如果找不到建立的文件,很可能建立到“C:\Windows”目录下了
代码是蝶晓梦从网上收集的整理而成,改动并且增加了一些,感谢以前写这些代码的人
使用方法:添加到工程文件的引用现有项里面,
然后在想用的地方这样用:
#region 读写配置文件
string AppPath= Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)+@"\";
string IniFile="MyIniFile.ini";           
IniFiles Ini = new IniFiles(AppPath+IniFile);//ini文件的绝对路径
Ini.WriteValue("RunTime Control", "Running", "mystring");

#endregion
蝶晓梦说这个类能干很多事情,

比如增加一行注释
Ini.AddNotes("This is a note");

比如写入一个字符串的值
Ini.WriteValue("RunTime Control", "Running", "mystring");

比如写入一个整型的值
Ini.WriteValue("RunTime Control", "Running", 0);

比如写入一个布尔型的值
Ini.WriteValue("RunTime Control", "Running", true);

还能写入datetime的和object的
读的时候能读字符串的,整型的,布尔的,datetime的,例如
bool running=Ini.ReadValue("RunTime Control", "Running", true);
其他功能自己可以增加或者发掘
写了两个事件,一个是当向Ini.FileName赋值时会触发Ini文件改变的事件
还有一个是这个类实例化的时候会触发一个
举例子:
Ini.IniFileChanged+=new IniFiles.EventHandler(Ini_IniFileChanged);//注册事件

然后事件触发的内容写在这里
void Ini_IniFileChanged(object sender, EventArgs e)
{
//写代码于此
}
蝶晓梦说,大家以后可以增加这个类的功能,使这个类更加强大

增加内容:蝶晓梦说,平时不要首先用addnotes和addtext,可能会因为文本编码的问题出错
========================================================================
*/

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>
/// 读出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
}

/*
========================================================================

将上面的代码保存成IniFiles.cs
然后添加到项目里

更新到2009-08-28
========================================================================
*/

C# 对Ini文件操作(C# ini文件操作类)相关推荐

  1. VC操作INI文件 ,INI文件操作总结,如何操作INI文件,INI文件使用方法小结

    INI文件简介 在我们写程序时,总有一些配置信息需要保存下来,以便在下一次启动程序完成初始化,这实际上是一种类持久化.将一些信息写入INI文件(initialization file)中,可完成简单的 ...

  2. python的txt、csv、ini、xml、excel文件相关操作

    python的txt.csv.ini.xml.excel文件相关操作 函数,一个用于专门实现某个功能的代码块(可重用) 内置函数 len.bin.oct.hex 等 自定义函数 # 定义了一个函数,功 ...

  3. 第三十二天学习笔记-web漏洞-文件上传的条件竞争、.htaccess文件与.user.ini文件使用前提、二次渲染

    目录 二次渲染原理 绕过方法 htaccess配置文件 .user.ini 二次渲染原理 在我们上传文件后,网站会对图片进行二次处理(格式.尺寸,保存,删除 要求等),服务器会把里面的内容进行替换更新 ...

  4. eclipse.ini vm参数– eclipse.ini文件位置Mac,Windows

    eclipse.ini is the configuration file used to control the Eclipse startup. We can configure Eclipse ...

  5. linux读ini文件,Linux下INI文件解析

    一个linux下的ini文件解析模块. 因为工作需要, 需要在linux环境去解析ini配置文件. 个人写了一个委简单ini解析模块. 先记录下ini文件的格式 ini文件的格式为 [section1 ...

  6. python处理ini文件_python对ini配置文件处理

    >>> cf.read("test.ini")                              #读取配置文件 ['test.ini'] >> ...

  7. PHP文件上传和文件操作案例

    <?php /**文件配置变量$dirname是目录名称*/ session_start(); $dirname = 'upload'; $fileClass = new fileClass($ ...

  8. MFC 操作配置文件INI的方法

    1. VC中用函数读写ini文件的方法 ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Sec ...

  9. mysql的记录操作的日志文件_MySql 的操作日志 历史记录

    如何查看mysql数据库操作记录日志 1.首先确认你日志是否启用了mysql>show variables like 'log_bin'. 2.如果启用了,即ON,那日志文件就在mysql的安装 ...

  10. python新建文件夹代码_Python文件夹与文件的操作实现代码

    有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即 ...

最新文章

  1. springboot @ConfigurationProperties
  2. 模拟电路技术之基础知识(一)
  3. 【转】early-z、z-culling、hi-z、z-perpass
  4. android 颜色填充工具栏,Android工具栏颜色未由colorPrimary设置
  5. mysql中数据库覆盖导入的几种方式
  6. NodeJS+Express+mySQL服务端开发详解
  7. C++中的sort函数对二维数组排序是按照什么准则?
  8. python和java学哪个好-Python和Java学哪个好?大家是怎么选的
  9. 一个init.php(网站启始)的一般信息
  10. 使用@Transactional(SUPPORTS)和不加@Transactional 有什么区别?
  11. EasyUI 1.5.1 美化主题大包 Insdep Theme 1.0.3 已发布,开源下载
  12. 鸭子类型 Duck typing
  13. mysqlinnodb数据库损坏,全网最新
  14. SQL从特定位置检索记录
  15. 高德地图开发 —— 获取高德地图开发的 key
  16. 「助记词密盒」用户协议与隐私政策
  17. squid代理服务+ip代理池
  18. [Python] 黑白棋(翻转棋)小游戏
  19. 南京三只松鼠java_又出新模式?三只松鼠南京首家品牌集合店开业
  20. 4.imx6 IPU代码详细分析

热门文章

  1. JSR 303 - Bean Validation 简介及使用方法
  2. notepad++ 使用去掉自动检查红线
  3. 简单版:带干扰线的图形验证码生成
  4. CF1082G Petya and Graph(最小割,最大权闭合子图)
  5. php curl模拟https请求
  6. 【转】 JMeter学习(二十四)linux启动jmeter,执行./jmeter.sh报错解决方法
  7. Safengine Android so加密
  8. 计算机中整数加法满足结合律吗
  9. 【原创】StreamInsight查询系列(三)——基本查询操作之过滤
  10. win下php的memcached的安装与使用