C#操作INI文件

wolfmvp 2009-01-06 09:47:16
首先,我已经完全实现了对INI文件的读操作,现在对它的写操作有些疑惑。我在向INI文件中进行写操作时,物理INI文件的内容不发生改变,但当我再次读取时,显示的是我已经修改后的内容,也就是说实际INI文件和我修改后的INI文件不搭配,这是怎么回事啊?顶者有分相送……
...全文
969 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
zww 2011-04-21
  • 打赏
  • 举报
回复


论文MVP网 2009-01-07
  • 打赏
  • 举报
回复
发代码 快点
wsf205 2009-01-06
  • 打赏
  • 举报
回复
仔细看一下,应该是哪里的逻辑出了问题吧
lcdboy 2009-01-06
  • 打赏
  • 举报
回复
顶12楼的
Fibona 2009-01-06
  • 打赏
  • 举报
回复
你写完的时候查看一下物理文件如果没有,就是保存在内存中的
lunat 2009-01-06
  • 打赏
  • 举报
回复
你的WritePrivateProfileString呢?
是用的API吧 用GetPrivateProfileString和WritePrivateProfileString是不会出错的

[DllImport("kernel32")]
static extern int WritePrivateProfileString(string Section,string Key,string Value,string iniFile);
[DllImport("kernel32")]
static extern int GetPrivateProfileString(string Section,string Key,string defaultValue,StringBuilder returnValue,int Size,string iniFile);
wolfmvp 2009-01-06
  • 打赏
  • 举报
回复
我作一个简单的介绍吧:在程序的Bin文件中有一个存在的INI文件,当程序加载时,直接将它显示.具体代码如下:
str="ConnectionString.ini";
strOne=System.IO.Path.GetFileNameWithOutExtension(str);
if(File.Exists(str))
{
server.Text=ContentReader(strOne,"Data Source","");
database.Text=ContentReader(strOne,"DataBase","");
uid.Text=ContentReader(strOne,"Uid","");
pwd.Text=ContentReader(strOne,"Pwd","");
}
Public string ContentReader(string area,string key,string def)
{
StringBuilder stringBuilder=new StringBuilder(2048);
GetPrivateProfileString(area,key,def,stringBuilder,2048,def);
return stringBuilder.Tostring();
}
说明:GetPrivateProfileString()方法为读取INI文件的方法
server、database、uid、pwd为文本框名用来显示INI文件的内容
   str、strOne为自定义字符串
haoyuenan 2009-01-06
  • 打赏
  • 举报
回复
顶8楼的,楼主把自己的代码贴上来看看
RedRain0220 2009-01-06
  • 打赏
  • 举报
回复
楼上的方法是正确的.
建议你贴出代码,让大家看看
zhouxing_24 2009-01-06
  • 打赏
  • 举报
回复
首先是不是用利用INI文件来保存初始化数据?如果是,你要清楚INI文件保存初始化数据是WIN95时期的技术,在WIN98以后逐渐都用注册表保存初始化数据。关于注册表的优势我想就不用我多说了!
之后你是否用的是WIN自带的INI文件呢?如果是,我建议你自己生成一个INI文件,不要用系统的,这样可以防止一些系统错误,以及和其他软件的冲突。
现在说说你碰见的问题,1.你是否确认你读写的文件和你打开看的文件是同一个文件。2.你对文件做读写操作后,时候在确认保存完毕之后才打开的物理文件观看。
关于INI文件的读写操作,你可以参考:http://blog.csdn.net/zhouxing_24/archive/2009/01/06/3719470.aspx
zhouxing_24 2009-01-06
  • 打赏
  • 举报
回复
首先你用INI文件是不是要保存初始化数据呢?如果是,你要清楚用INI文件保存初始化数据是WIN95时期的技术,到WIN98以后逐渐都用注册表来保存初始化数据。注册表的优势我想就不用我多说了。
之后你用的INI文件是不是系统自带的呢?如果是,我建议你自己写一个INI不要用系统的,这样容易出现一些系统调用时候的错误,或者和其他软件的冲突等。
之后关于你的问题,你首先要确认你所读写的文件是不是同一个,或则你写的文件和你打开的文件是不是同一个!接着你要确认你对INI文件的操作时候进行了最后的确认保存。
关于INI文件的读写操作,你可以参考http://blog.csdn.net/zhouxing_24/archive/2009/01/06/3719470.aspx
indefectible 2009-01-06
  • 打赏
  • 举报
回复
最好用xml
lovehongyun 2009-01-06
  • 打赏
  • 举报
回复
还有这事

发代码看看
优途科技 2009-01-06
  • 打赏
  • 举报
回复
为何不用xml?
wuyq11 2009-01-06
  • 打赏
  • 举报
回复
写的时候是否写入到原文件,还是保存为其他文件
yanlongwuhui 2009-01-06
  • 打赏
  • 举报
回复
你确定是往配置文件中写的吗?附上代码看看
lunat 2009-01-06
  • 打赏
  • 举报
回复
你没有保存到磁盘上面,你读和写的都是内存中的内容...
wolfmvp 2009-01-06
  • 打赏
  • 举报
回复
呵呵!你们的这两种方法都行,先谢谢了,分数马上送上……
现在结贴……
lunat 2009-01-06
  • 打赏
  • 举报
回复
如果是路径错了 就该打PP了...
用这个
string iniFile = Application.StartupPath+@"\ConnectionString.ini";
lovehongyun 2009-01-06
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 beblue 的回复:]
楼上的方法不支持绝对路径和相对路径一起用,

用Path的路径合并方法就可以了,
[/Quote]

ini文件只要放在和程序集相关的路径下即可.不可能要放到其它地方的.

难道你的程序装在d:\aa\app目录下,你的ini文件要放到c:\ 下面??
这样是不可取的.
加载更多回复(4)

110,534

社区成员

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

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

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