C# 操作INI文件类.docx
- 文档编号:4042485
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:10
- 大小:16.81KB
C# 操作INI文件类.docx
《C# 操作INI文件类.docx》由会员分享,可在线阅读,更多相关《C# 操作INI文件类.docx(10页珍藏版)》请在冰豆网上搜索。
C#操作INI文件类
C#操作INI文件类
privatevoidtestini_load(objectsender,system.eventargse)
{
//创建一个inifile对象,参数为文件路径,如果不存在他会自动创建的
inifileinf=newinifile(@"d:
\工作目录\vspp\vsppserver\bin\debug\compiled.ini");
//显示ini设置的结构
foreach(stringkininf.segments.keys)
{
treenodeo=newtreenode(k);
inisegments=inf.segments[k]; //取出当前设置节
foreach(stringk1ins.items.keys)
{
treenodeo1=newtreenode(k1+"="+s.items[k1].value); //访问设置节中每个设置项
o.nodes.add(o1);
}
treeview1.nodes.add(o);
}
//添加一个设置
inf.segments.add("test"); //添加test节
inf.segments["test"].items.add("ip","192.168.0.1"); //添加一个设置项
//快速添加一个设置项
inf.segments["测试"].items["host"].value="localhost"; //:
)和上面两行相同的效果
//读取也是同样的方便
messagebox.show(inf.segments["测试"].items["host"].value);
//如果不存在这样的设置项,将返回空字符串并创建这个项
messagebox.show(inf.segments["测试"].items["server"].value);
//清除一个设置节下面的所有设置项
//inf.segments["action"].clear();
}
再show代码:
usingsystem;
usingsystem.io;
usingsystem.data;
usingsystem.text;
usingsystem.collections;
usingsystem.text.regularexpressions;
usingsystem.runtime.interopservices;
namespaceeglic
{
#regionini文件操作类
///
///设置节
///
publicclassinisegment
{
privatestring__name;
privateinisegments__owner;
///
///所有设置项集合
///
publiciniitemsitems;
///
///构造函数
///
///
///
publicinisegment(inisegmentso,stringvname)
{
__owner=o;
__name=vname;
items=newiniitems(this);
o.owner.getsegment(this);
}
///
///获取设置节的名称
///
publicstringname
{
get{return__name;}
}
///
///获取segment的owner:
inisegments集合
///
publicinisegmentsowner
{
get{return__owner;}
}
///
///清除所有设置项
///
publicvoidclear()
{
__owner.owner.writesegment(__name,"\0\0");
}
}
///
///设置节集合
///
publicclassinisegments:
dictionarybase
{
privateinifile__owner;
///
///构造函数
///
///
publicinisegments(inifileo)
{
__owner=o;
}
///
///获取此对象的owner:
inifile类
///
publicinifileowner
{
get{return__owner;}
}
///
///添加一个已存在的设置节
///
///
publicvoidadd(inisegmento)
{
if(!
dictionary.contains(o.name))
dictionary.add(o.name,o);
}
///
///添加一个可能不存在的设置节(创建一个设置节)
///
///
///
publicinisegmentadd(stringvname)
{
if(dictionary.contains(vname))
return(inisegment)dictionary[vname];
inisegmento=newinisegment(this,vname);
dictionary.add(vname,o);
returno;
}
///
///获取索引集合
///
publicicollectionkeys
{
get{returndictionary.keys;}
}
///
///获取值集合
///
publicicollectionvalues
{
get{returndictionary.values;}
}
///
///获取设置节
///
publicinisegmentthis[stringvname]
{
get{
if(!
dictionary.contains(vname))
returnthis.add(vname);
else
return(inisegment)dictionary[vname];
}
}
///
///获取是否包含某设置节
///
///
///
publicboolcontains(stringvname)
{
returndictionary.contains(vname);
}
}
///
///设置项
///
publicclassiniitem
{
privatestring__name;
privatestring__value;
privateiniitems__owner;
///
///构造函数
///
///
///
///
publiciniitem(iniitemso,stringvname,stringvvalue)
{
__owner=o;
__name=vname;
__value=vvalue;
if(!
o.contains(vname))
o.owner.owner.owner.setstring(o.owner.name,vname,vvalue);
}
///
///获取名称
///
publicstringname
{
get{return__name;}
}
///
///获取设置值
///
publicstringvalue
{
get{return__value;}
set{
__value=value;
__owner.owner.owner.owner.setstring(__owner.owner.name,__name,value);
}
}
///
///获取owner
///
publiciniitemsowner
{
get{return__owner;}
}
}
///
///设置项集合
///
publicclassiniitems:
dictionarybase
{
privateinisegment__owner;
///
///构造函数
///
///
publiciniitems(inisegmento)
{
__owner=o;
}
///
///获取owner
///
publicinisegmentowner
{
get{return__owner;}
}
///
///添加一个已存在的设置项
///
///
publicvoidadd(iniitemo)
{
if(!
dictionary.contains(o.name))
dictionary.add(o.name,o);
}
///
///获取是否包含指定名称的设置项
///
///
///
publicboolcontains(stringvname)
{
returndictionary.contains(vname);
}
///
///获取所有的索引集合
///
publicicollectionkeys
{
get{returndictionary.keys;}
}
///
///获取所有的值集合
///
publicicollectionvalues
{
get{returndictionary.values;}
}
///
///添加一个可能不存在的设置项(创建一个设置项)
///
///
///
///
publiciniitemadd(stringvname,stringvvalue)
{
if(dictionary.contains(vname))
return(iniitem)dictionary[vname];
else
{
iniitemo=newiniitem(this,vname,vvalue);
this.add(o);
returno;
}
}
///
///获取指定索引的设置项
///
publiciniitemthis[stringvname]
{
get{
if(dictionary.contains(vname))
return(iniitem)dictionary[vname];
else
returnthis.add(vname,"");
}
}
}
///
///ini文件操作类
///
publicclassinifile
{
#region导入dll函数
[dllimport("kernel32.dll")]publicexternstaticintgetprivateprofileinta(stringsegname,stringkeyname,intidefault,stringfilename);
[dllimport("kernel32.dll")]publicexternstaticintgetprivateprofilestringa(stringsegname,stringkeyname,stringsdefault,stringbuilderretvalue,intnsize,stringfilename);
[dllimport("kernel32.dll")]publicexternstaticintgetprivateprofilesectiona(stringsegname,byte[]sdata,intnsize,stringfilename);
[dllimport("kernel32.dll")]publicexternstaticintwriteprivateprofilesectiona(stringsegname,byte[]sdata,stringfilename);
[dllimport("kernel32.dll")]publicexternstaticintwriteprivateprofilestringa(stringsegname,stringkeyname,stringsvalue,stringfilename);
[dllimport("kernel32.dll")]publicexternstaticintgetprivateprofilesectionnamesa(byte[]vdata,intilen,stringfilename);
#endregion
privatestring__path;
///
///所有的设置节
///
publicinisegmentssegments;
///
///构造函数
///
///
publicinifile(stringvpath)
{
__path=vpath;
segments=newinisegments(this);
byte[]bufsegs=newbyte[32767];
intrel=getprivateprofilesectionnamesa(bufsegs,32767,__path);
inticnt,ipos;
stringtmp;
if(rel>0)
{
icnt=0;ipos=0;
for(icnt=0;icnt { if(bufsegs[icnt]==0x00) { tmp=system.text.asciiencoding.default.getstring(bufsegs,ipos,icnt).trim(); ipos=icnt+1; if(tmp! ="") segments.add(tmp); } } } } /// ///获取ini文件路径 /// publicstringpath { get{return__path;} } /// ///读取一个整数型的设置值 /// /// /// /// /// publicintgetint(stringsegname,stringkeyname,intidefault) { returngetprivateprofileinta(segname,keyname,idefault,__path); } /// ///读取一个字符串型设置值 /// /// /// /// /// publicstringgetstring(stringsegname,stringkeyname,stringsdefault) { stringbuilderred=newstringbuilder(1024); getprivateprofilestringa(segname,keyname,"",red,1024,__path); returnred.tostring(); } /// ///写入设置项 /// /// /// /// publicvoidsetstring(stringsegname,stringkeyname,stringvvalue) { writeprivateprofilestringa(segname,keyname,vvalue,__path); } /// ///写入一个设置节 /// /// /// /// ///数据为多个设置项组成的字符串,每个设置项之间用"\0"分割 ///字符串最后用"\0\0"结束 /// /// ///writesegment(segname,"\0\0");能用于清除一个设置节下的所有设置项 /// publicvoidwritesegment(stringsegname,stringvdata) { writeprivateprofilesectiona(segname,system.text.asciiencoding.default.getbytes(vdata),__path); } /// ///读取一个设置节下面的所有设置项 /// /// publicvoidgetsegment(inisegmento) { byte[]vdata=newbyte[32767]; intrlen=getprivateprofilesectiona(o.name,vdata,32767,__path
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 操作INI文件类 操作 INI 文件
![提示](https://static.bdocx.com/images/bang_tan.gif)