/// <summary>
/// 向ini文件中写入数据或存入数据
/// </summary>
public class IniFile
{
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName,
string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName); [DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string lpAppName,
string lpKeyName, string lpString, string lpFileName); /// <summary>
/// 构造函数
/// </summary>
/// <param name="iniFileName">INI文件名</param>
public IniFile(string iniFileName)
{
this.iniFileName = iniFileName;
} /// <summary>
/// 读取ini文件数据
/// </summary>
/// <param name="section">节点名,例如[schema]</param>
/// <param name="key">键名</param>
/// <param name="nDefault">键值的默认值,若未读取数据,用该值取代</param>
/// <returns>键值</returns>
public string ReadIni(string section, string key, string nDefault)
{
StringBuilder tmp = new StringBuilder(1024);
int rec = GetPrivateProfileString(section, key, nDefault, tmp, 1024, this.iniFileName);
return tmp.ToString();
} /// <summary>
/// 向ini文件中写入数据
/// </summary>
/// <param name="section">节点名,例如[schema]</param>
/// <param name="key">键名</param>
/// <param name="strVal">键值</param>
public void WriteIni(string section, string key, string strVal)
{
WritePrivateProfileString(section, key, strVal, this.iniFileName);
} private string iniFileName;
}
}
用WritePrivateProfileString(section, key, strVal, this.iniFileName);这个函数网ini文件里写东西,在section, key,this.iniFileName都相同的情况下,为什么每次都是增加记录,而不是覆盖原有的数据,求解答,我只想覆盖,并不是添加
/// 向ini文件中写入数据或存入数据
/// </summary>
public class IniFile
{
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName,
string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName); [DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string lpAppName,
string lpKeyName, string lpString, string lpFileName); /// <summary>
/// 构造函数
/// </summary>
/// <param name="iniFileName">INI文件名</param>
public IniFile(string iniFileName)
{
this.iniFileName = iniFileName;
} /// <summary>
/// 读取ini文件数据
/// </summary>
/// <param name="section">节点名,例如[schema]</param>
/// <param name="key">键名</param>
/// <param name="nDefault">键值的默认值,若未读取数据,用该值取代</param>
/// <returns>键值</returns>
public string ReadIni(string section, string key, string nDefault)
{
StringBuilder tmp = new StringBuilder(1024);
int rec = GetPrivateProfileString(section, key, nDefault, tmp, 1024, this.iniFileName);
return tmp.ToString();
} /// <summary>
/// 向ini文件中写入数据
/// </summary>
/// <param name="section">节点名,例如[schema]</param>
/// <param name="key">键名</param>
/// <param name="strVal">键值</param>
public void WriteIni(string section, string key, string strVal)
{
WritePrivateProfileString(section, key, strVal, this.iniFileName);
} private string iniFileName;
}
}
用WritePrivateProfileString(section, key, strVal, this.iniFileName);这个函数网ini文件里写东西,在section, key,this.iniFileName都相同的情况下,为什么每次都是增加记录,而不是覆盖原有的数据,求解答,我只想覆盖,并不是添加
解决方案 »
- 请问以下代码怎么转换
- 【分享】 疯狂的 Form
- 菜鸟的一点简单的疑问
- Visual C# + SQL Server数据库开发与实例 这本书的光盘谁有,我的丢了。
- C#如何只运行程序的一个实例?发现已有同样的实例在运行,此时如何让这个已运行的实例窗口显示在桌面的最前面?
- Vs 2005 发布的,提示错误“无法启动应用程序。请与应用程序供应商联系”
- 关于IssueVision命令模式中对象生命周期的困惑
- 用过VS2005的朋友进来,帮俺解决个小问题。VS2003与2005哪个用起来更爽?(目前在线)
- 请教关于C#代码编译问题
- 正则求助:请大家帮个忙,谢谢
- 水晶报表数据加载完事件
- ASPX+C#网站在win2003server IIS6.0 发布后却出下面提示,何因??
public IniFiles(string AFileName)
{
// 判断文件是否存在
FileInfo fileInfo = new FileInfo(AFileName);
//Todo:搞清枚举的用法
if ((!fileInfo.Exists))
{ //|| (FileAttributes.Directory in fileInfo.Attributes))
//文件不存在,建立文件
System.IO.StreamWriter sw = new System.IO.StreamWriter(AFileName, false, System.Text.Encoding.Default);
try
{
sw.Write("Test.");
sw.Close();
}
catch
{
throw (new ApplicationException("Ini文件不存在"));
}
}
//必须是完全路径,不能是相对路径
FileName = fileInfo.FullName;
}
ini文件内容:
[DBCFG]
;阿打扫打扫
IPTFPath =qqqqq[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName,
string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName); [DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string lpAppName,
string lpKeyName, string lpString, string lpFileName);
static void Main(string[] args)
{ WriteString("DBCFG", "IPTFPath", "asdasd",AppDomain.CurrentDomain.BaseDirectory + "typhoonPath.ini"); }
//写INI文件
public static void WriteString(string Section, string Ident, string Value,string FileName)
{
if (!WritePrivateProfileString(Section, Ident, Value, FileName))
{ throw (new ApplicationException("写Ini文件出错"));
}
}
运行后ini文件的内容就变成“asdasd”了。