C# 对Ini文件操作(C# ini文件操作类)
***************************************************
更多精彩,欢迎进入: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文件操作类)相关推荐
- VC操作INI文件 ,INI文件操作总结,如何操作INI文件,INI文件使用方法小结
INI文件简介 在我们写程序时,总有一些配置信息需要保存下来,以便在下一次启动程序完成初始化,这实际上是一种类持久化.将一些信息写入INI文件(initialization file)中,可完成简单的 ...
- python的txt、csv、ini、xml、excel文件相关操作
python的txt.csv.ini.xml.excel文件相关操作 函数,一个用于专门实现某个功能的代码块(可重用) 内置函数 len.bin.oct.hex 等 自定义函数 # 定义了一个函数,功 ...
- 第三十二天学习笔记-web漏洞-文件上传的条件竞争、.htaccess文件与.user.ini文件使用前提、二次渲染
目录 二次渲染原理 绕过方法 htaccess配置文件 .user.ini 二次渲染原理 在我们上传文件后,网站会对图片进行二次处理(格式.尺寸,保存,删除 要求等),服务器会把里面的内容进行替换更新 ...
- eclipse.ini vm参数– eclipse.ini文件位置Mac,Windows
eclipse.ini is the configuration file used to control the Eclipse startup. We can configure Eclipse ...
- linux读ini文件,Linux下INI文件解析
一个linux下的ini文件解析模块. 因为工作需要, 需要在linux环境去解析ini配置文件. 个人写了一个委简单ini解析模块. 先记录下ini文件的格式 ini文件的格式为 [section1 ...
- python处理ini文件_python对ini配置文件处理
>>> cf.read("test.ini") #读取配置文件 ['test.ini'] >> ...
- PHP文件上传和文件操作案例
<?php /**文件配置变量$dirname是目录名称*/ session_start(); $dirname = 'upload'; $fileClass = new fileClass($ ...
- MFC 操作配置文件INI的方法
1. VC中用函数读写ini文件的方法 ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Sec ...
- mysql的记录操作的日志文件_MySql 的操作日志 历史记录
如何查看mysql数据库操作记录日志 1.首先确认你日志是否启用了mysql>show variables like 'log_bin'. 2.如果启用了,即ON,那日志文件就在mysql的安装 ...
- python新建文件夹代码_Python文件夹与文件的操作实现代码
有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即 ...
最新文章
- springboot @ConfigurationProperties
- 模拟电路技术之基础知识(一)
- 【转】early-z、z-culling、hi-z、z-perpass
- android 颜色填充工具栏,Android工具栏颜色未由colorPrimary设置
- mysql中数据库覆盖导入的几种方式
- NodeJS+Express+mySQL服务端开发详解
- C++中的sort函数对二维数组排序是按照什么准则?
- python和java学哪个好-Python和Java学哪个好?大家是怎么选的
- 一个init.php(网站启始)的一般信息
- 使用@Transactional(SUPPORTS)和不加@Transactional 有什么区别?
- EasyUI 1.5.1 美化主题大包 Insdep Theme 1.0.3 已发布,开源下载
- 鸭子类型 Duck typing
- mysqlinnodb数据库损坏,全网最新
- SQL从特定位置检索记录
- 高德地图开发 —— 获取高德地图开发的 key
- 「助记词密盒」用户协议与隐私政策
- squid代理服务+ip代理池
- [Python] 黑白棋(翻转棋)小游戏
- 南京三只松鼠java_又出新模式?三只松鼠南京首家品牌集合店开业
- 4.imx6 IPU代码详细分析
热门文章
- JSR 303 - Bean Validation 简介及使用方法
- notepad++ 使用去掉自动检查红线
- 简单版:带干扰线的图形验证码生成
- CF1082G Petya and Graph(最小割,最大权闭合子图)
- php curl模拟https请求
- 【转】 JMeter学习(二十四)linux启动jmeter,执行./jmeter.sh报错解决方法
- Safengine Android so加密
- 计算机中整数加法满足结合律吗
- 【原创】StreamInsight查询系列(三)——基本查询操作之过滤
- win下php的memcached的安装与使用