C#读写ini文件

whowhen21 2009-01-02 07:32:44
我想用C#写一个应用程序,希望会产生一个配置文件,必要时候还要读取它,请问这个如何实现啊?
就是Ini格式的那种文件,还要读取指定一行,可以嘛?等待解答…
谢谢
...全文
6623 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangkuang5 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 slimfeng 的回复:]
C# code
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key,
string val, string filePath);
/*参数说明:section:INI文件中的段落;key:INI文件中的关键字;
val:INI文件中关键字的数值;filePath:INI文件的完整的路径和名称。*/
..............
[/Quote]
正解了
much0726 2009-01-04
  • 打赏
  • 举报
回复
要调用系统DLL.还是用XML吧.
delphizhou 2009-01-03
  • 打赏
  • 举报
回复

跟着学习....


.
猿敲月下码 2009-01-03
  • 打赏
  • 举报
回复
public string inipath; 
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);



例如:
WritePrivateProfileString("节点", "QQ", "123456789", "C:\\1.ini"); 

这样就会在C盘建立个1.ini文件里面的内容如下:

[节点]
QQ=123456789
F_sea 2009-01-03
  • 打赏
  • 举报
回复
app.config
其格式就是XML
FAFA2008 2009-01-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mapserver 的回复:]
都什么年代了,还用ini,推荐用xml。
[/Quote]
同意1楼,如果读取ini的话还调用相关的api反而显得有些不伦不类
kimmking 2009-01-03
  • 打赏
  • 举报
回复
INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数.
INI文件其实并不是普通的文本文件.它有自己的结构.由若干段落(SECTION)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(KEYWORD)和一个等号,等号右边就是关键字的值(VALUE).例如:
[Section1]
KeyWord1 = Value1
KeyWord2 = Value2
...
[Section2]
KeyWord3 = Value3
KeyWord4 = Value4

C#命名空间中没有直接读写INI的类,当然如果你把INT当成文本文件用System.IO类来读写算我没说.
我现在介绍的是系统处理INI的方法.
虽然C#中没有,但是在"kernel32.dll"这个文件中有Win32的API函数--WritePrivateProfileString()和GetPrivateProfileString()
C#声明INI文件的写操作函数WritePrivateProfileString():
[DllImport( "kernel32" )]
private static extern long WritePrivateProfileString ( string section ,string key , string val
, string filePath ) ;
参数说明:section:INI文件中的段落;key:INI文件中的关键字;val:INI文件中关键字的数值;filePath:INI文件的完整的路径和名称。
C#申明INI文件的读操作函数GetPrivateProfileString(): [DllImport("kernel32")]
private static extern int GetPrivateProfileString ( string section ,
string key , string def , StringBuilder retVal ,
int size , string filePath ) ;参数说明:section:INI文件中的段落名称;key:INI文件中的关键字;def:无法读取时候时候的缺省数值;retVal:读取数值;size:数值的大小;filePath:INI文件的完整路径和名称。

下面是一个读写INI文件的类:
public class INIClass
{
public string inipath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
/// <summary>
/// 构造方法
/// </summary>
/// <param name="INIPath">文件路径</param>
public INIClass(string INIPath)
{
inipath = INIPath;
}
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
public void IniWriteValue(string Section,string Key,string Value)
{
WritePrivateProfileString(Section,Key,Value,this.inipath);
}
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
public string IniReadValue(string Section,string Key)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section,Key,"",temp,500,this.inipath);
return temp.ToString();
}
/// <summary>
/// 验证文件是否存在
/// </summary>
/// <returns>布尔值</returns>
public bool ExistINIFile()
{
return File.Exists(inipath);
}
}
hhh9719 2009-01-03
  • 打赏
  • 举报
回复
但是,写不进去啊!
如该ini文件不存在,新建之后,就不能写进去
cuike519 2009-01-03
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/cs/ini.aspx
xlfancy 2009-01-03
  • 打赏
  • 举报
回复
INI文件读取专用

http://blog.csdn.net/xlfancy/archive/2008/12/13/3509857.aspx
shuidao 2009-01-03
  • 打赏
  • 举报
回复
mark
hangang7403 2009-01-03
  • 打赏
  • 举报
回复
同意楼上的
vieri122 2009-01-03
  • 打赏
  • 举报
回复
搞xml吧 楼主
lvg 2009-01-03
  • 打赏
  • 举报
回复
up
laidon 2009-01-03
  • 打赏
  • 举报
回复
由于效率和标准问题,现在C#中没有直接操作ini的类,要是不怕费事就直接当成文件写就是了,不过按ini文件格式就是了
[Section1]
KeyWord1 = Value1
KeyWord2 = Value2
...
[Section2]
KeyWord3 = Value3
KeyWord4 = Value4
如果不是必须,还是推荐使用xml,简单方便,msdn直接查找
wwwhaichun 2009-01-03
  • 打赏
  • 举报
回复
如果一定要使用INI文件的话,当然是用API函数了
但是微软推荐使用XML文件的
sunnyhuang2008 2009-01-03
  • 打赏
  • 举报
回复
FILT.CREATE XXX.ini
yagebu1983 2009-01-02
  • 打赏
  • 举报
回复
建议楼主用一楼的方法!!!
XML文件来做配置文件
春天的气息 2009-01-02
  • 打赏
  • 举报
回复
用xml最理想了,如果配置文件不大可以用ini
加载更多回复(3)

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧