怎么修改INI文件中标题下面的键值 [NEWS]m1=01m2=01怎么把m1修改为m3. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #region 读写ini文件 API定义 [DllImport("kernel32.dll", EntryPoint = "WritePrivateProfileStringA")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringA")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); #endregion /// <summary> /// 写INI文件 /// </summary> /// <param name="Section">配置目录</param> /// <param name="Key">参数</param> /// <param name="Value">值</param> /// <param name="IniPath">路径</param> public static bool IniWriteValue(string Section, string Key, string Value, string IniPath) { try { WritePrivateProfileString(Section, Key, Value, IniPath); return true; } catch { return false; } } /// <summary> /// 读INI文件 /// </summary> /// <param name="Section">配置目录</param> /// <param name="Key">参数</param> /// <param name="IniPath">路径</param> /// <returns>返回值</returns> public static string IniReadValue(string Section, string Key, string IniPath) { StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(Section, Key, "", temp, 255, IniPath); return temp.ToString(); } using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;namespace IniFiles{ public abstract class CustomIniFile { public CustomIniFile(string AFileName) { FFileName = AFileName; } private string FFileName; public string FileName { get { return FFileName; } } public virtual bool SectionExists(string Section) { List<string> vStrings = new List<string>(); ReadSections(vStrings); return vStrings.Contains(Section); } public virtual bool ValueExists(string Section, string Ident) { List<string> vStrings = new List<string>(); ReadSection(Section, vStrings); return vStrings.Contains(Ident); } public abstract string ReadString(string Section, string Ident, string Default); public abstract bool WriteString(string Section, string Ident, string Value); public abstract bool ReadSectionValues(string Section, List<string> Strings); public abstract bool ReadSection(string Section, List<string> Strings); public abstract bool ReadSections(List<string> Strings); public abstract bool EraseSection(string Section); public abstract bool DeleteKey(string Section, string Ident); public abstract bool UpdateFile(); } /// <summary> /// 存储本地INI文件的类。 /// </summary> public class IniFile : CustomIniFile { [DllImport("kernel32")] private static extern uint GetPrivateProfileString( string lpAppName, // points to section name string lpKeyName, // points to key name string lpDefault, // points to default string byte[] lpReturnedString, // points to destination buffer uint nSize, // size of destination buffer string lpFileName // points to initialization filename ); [DllImport("kernel32")] private static extern bool WritePrivateProfileString( string lpAppName, // pointer to section name string lpKeyName, // pointer to key name string lpString, // pointer to string to add string lpFileName // pointer to initialization filename ); /// <summary> /// 构造IniFile实例。 /// <param name="AFileName">指定文件名</param> /// </summary> public IniFile(string AFileName) : base(AFileName) { } /// <summary> /// 析够IniFile实例。 /// </summary> ~IniFile() { UpdateFile(); } /// <summary> /// 读取字符串值。 /// <param name="Ident">指定变量标识。</param> /// <param name="Section">指定所在区域。</param> /// <param name="Default">指定默认值。</param> /// <returns>返回读取的字符串。如果读取失败则返回该值。</returns> /// </summary> public override string ReadString(string Section, string Ident, string Default) { byte[] vBuffer = new byte[2048]; uint vCount = GetPrivateProfileString(Section, Ident, Default, vBuffer, (uint)vBuffer.Length, FileName); return Encoding.Default.GetString(vBuffer, 0, (int)vCount); } /// <summary> /// 写入字符串值。 /// </summary> /// <param name="Section">指定所在区域。</param> /// <param name="Ident">指定变量标识。</param> /// <param name="Value">所要写入的变量值。</param> /// <returns>返回写入是否成功。</returns> public override bool WriteString(string Section, string Ident, string Value) { return WritePrivateProfileString(Section, Ident, Value, FileName); } /// <summary> /// 获得区域的完整文本。(变量名=值格式)。 /// </summary> /// <param name="Section">指定区域标识。</param> /// <param name="Strings">输出处理结果。</param> /// <returns>返回读取是否成功。</returns> public override bool ReadSectionValues(string Section, List<string> Strings) { List<string> vIdentList = new List<string>(); if (!ReadSection(Section, vIdentList)) return false; foreach (string vIdent in vIdentList) Strings.Add(string.Format("{0}={1}", vIdent, ReadString(Section, vIdent, ""))); return true; } /// <summary> /// 读取区域变量名列表。 /// </summary> /// <param name="Section">指定区域名。</param> /// <param name="Strings">指定输出列表。</param> /// <returns>返回获取是否成功。</returns> public override bool ReadSection(string Section, List<string> Strings) { byte[] vBuffer = new byte[16384]; uint vLength = GetPrivateProfileString(Section, null, null, vBuffer, (uint)vBuffer.Length, FileName); int j = 0; for (int i = 0; i < vLength; i++) if (vBuffer[i] == 0) { Strings.Add(Encoding.Default.GetString(vBuffer, j, i - j)); j = i + 1; } return true; } /// <summary> /// 读取区域名列表。 /// </summary> /// <param name="Strings">指定输出列表。</param> /// <returns></returns> public override bool ReadSections(List<string> Strings) { byte[] vBuffer = new byte[16384]; uint vLength = GetPrivateProfileString(null, null, null, vBuffer, (uint)vBuffer.Length, FileName); int j = 0; for (int i = 0; i < vLength; i++) if (vBuffer[i] == 0) { Strings.Add(Encoding.Default.GetString(vBuffer, j, i - j)); j = i + 1; } return true; } /// <summary> /// 删除指定区域。 /// </summary> /// <param name="Section">指定区域名。</param> /// <returns>返回删除是否成功。</returns> public override bool EraseSection(string Section) { return WritePrivateProfileString(Section, null, null, FileName); } /// <summary> /// 删除指定变量。 /// </summary> /// <param name="Section">变量所在区域。</param> /// <param name="Ident">变量标识。</param> /// <returns>返回删除是否成功。</returns> public override bool DeleteKey(string Section, string Ident) { return WritePrivateProfileString(Section, Ident, null, FileName); } /// <summary> /// 更新文件。 /// </summary> /// <returns>返回更新是否成功。</returns> public override bool UpdateFile() { return WritePrivateProfileString(null, null, null, FileName); } }}//通过SectionExists()可以知道 Read/Write XML files, Config files, INI files, or the RegistryBy Alvaro Mendezhttp://www.codeproject.com/csharp/readwritexmlini.asp 一个浏览新闻的小工具 SQL Server数据库中XML操作全功略 如何解决webBrowser新开页面问题? 如何提取查询出来的值 如何替换Winform的方向键的处理函数? 调查一下,你都学过啥 VS2005 C# 菜单“生成”中的“清理 project”是起什么作用? DataRowView这个东西 关于C#数据库编程的习惯问题 请问:如何在DATAVIEW的ROWFILTER里查找一个INT类型的列为空的行? C#怎么从SQL中读出BLOB值。。。谁能教教我啊。。。 我连接数据库的时候ConfigurationManager 为什么不能用了呢 很急啊???
[DllImport("kernel32.dll", EntryPoint = "WritePrivateProfileStringA")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringA")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
#endregion
/// <summary>
/// 写INI文件
/// </summary>
/// <param name="Section">配置目录</param>
/// <param name="Key">参数</param>
/// <param name="Value">值</param>
/// <param name="IniPath">路径</param>
public static bool IniWriteValue(string Section, string Key, string Value, string IniPath)
{
try
{
WritePrivateProfileString(Section, Key, Value, IniPath);
return true;
}
catch
{
return false;
} }
/// <summary>
/// 读INI文件
/// </summary>
/// <param name="Section">配置目录</param>
/// <param name="Key">参数</param>
/// <param name="IniPath">路径</param>
/// <returns>返回值</returns>
public static string IniReadValue(string Section, string Key, string IniPath)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp, 255, IniPath);
return temp.ToString();
}
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;namespace IniFiles
{
public abstract class CustomIniFile
{
public CustomIniFile(string AFileName)
{
FFileName = AFileName;
}
private string FFileName;
public string FileName
{
get { return FFileName; }
}
public virtual bool SectionExists(string Section)
{
List<string> vStrings = new List<string>();
ReadSections(vStrings);
return vStrings.Contains(Section);
}
public virtual bool ValueExists(string Section, string Ident)
{
List<string> vStrings = new List<string>();
ReadSection(Section, vStrings);
return vStrings.Contains(Ident);
}
public abstract string ReadString(string Section, string Ident, string Default);
public abstract bool WriteString(string Section, string Ident, string Value);
public abstract bool ReadSectionValues(string Section, List<string> Strings);
public abstract bool ReadSection(string Section, List<string> Strings);
public abstract bool ReadSections(List<string> Strings);
public abstract bool EraseSection(string Section);
public abstract bool DeleteKey(string Section, string Ident);
public abstract bool UpdateFile();
} /// <summary>
/// 存储本地INI文件的类。
/// </summary>
public class IniFile : CustomIniFile
{
[DllImport("kernel32")]
private static extern uint GetPrivateProfileString(
string lpAppName, // points to section name
string lpKeyName, // points to key name
string lpDefault, // points to default string
byte[] lpReturnedString, // points to destination buffer
uint nSize, // size of destination buffer
string lpFileName // points to initialization filename
); [DllImport("kernel32")]
private static extern bool WritePrivateProfileString(
string lpAppName, // pointer to section name
string lpKeyName, // pointer to key name
string lpString, // pointer to string to add
string lpFileName // pointer to initialization filename
); /// <summary>
/// 构造IniFile实例。
/// <param name="AFileName">指定文件名</param>
/// </summary>
public IniFile(string AFileName)
: base(AFileName)
{
} /// <summary>
/// 析够IniFile实例。
/// </summary>
~IniFile()
{
UpdateFile();
} /// <summary>
/// 读取字符串值。
/// <param name="Ident">指定变量标识。</param>
/// <param name="Section">指定所在区域。</param>
/// <param name="Default">指定默认值。</param>
/// <returns>返回读取的字符串。如果读取失败则返回该值。</returns>
/// </summary>
public override string ReadString(string Section, string Ident, string Default)
{
byte[] vBuffer = new byte[2048];
uint vCount = GetPrivateProfileString(Section,
Ident, Default, vBuffer, (uint)vBuffer.Length, FileName);
return Encoding.Default.GetString(vBuffer, 0, (int)vCount);
}
/// <summary>
/// 写入字符串值。
/// </summary>
/// <param name="Section">指定所在区域。</param>
/// <param name="Ident">指定变量标识。</param>
/// <param name="Value">所要写入的变量值。</param>
/// <returns>返回写入是否成功。</returns>
public override bool WriteString(string Section, string Ident, string Value)
{
return WritePrivateProfileString(Section, Ident, Value, FileName);
} /// <summary>
/// 获得区域的完整文本。(变量名=值格式)。
/// </summary>
/// <param name="Section">指定区域标识。</param>
/// <param name="Strings">输出处理结果。</param>
/// <returns>返回读取是否成功。</returns>
public override bool ReadSectionValues(string Section, List<string> Strings)
{
List<string> vIdentList = new List<string>();
if (!ReadSection(Section, vIdentList)) return false;
foreach (string vIdent in vIdentList)
Strings.Add(string.Format("{0}={1}", vIdent, ReadString(Section, vIdent, "")));
return true;
} /// <summary>
/// 读取区域变量名列表。
/// </summary>
/// <param name="Section">指定区域名。</param>
/// <param name="Strings">指定输出列表。</param>
/// <returns>返回获取是否成功。</returns>
public override bool ReadSection(string Section, List<string> Strings)
{
byte[] vBuffer = new byte[16384];
uint vLength = GetPrivateProfileString(Section, null, null, vBuffer,
(uint)vBuffer.Length, FileName);
int j = 0;
for (int i = 0; i < vLength; i++)
if (vBuffer[i] == 0)
{
Strings.Add(Encoding.Default.GetString(vBuffer, j, i - j));
j = i + 1;
}
return true;
} /// <summary>
/// 读取区域名列表。
/// </summary>
/// <param name="Strings">指定输出列表。</param>
/// <returns></returns>
public override bool ReadSections(List<string> Strings)
{
byte[] vBuffer = new byte[16384];
uint vLength = GetPrivateProfileString(null, null, null, vBuffer,
(uint)vBuffer.Length, FileName);
int j = 0;
for (int i = 0; i < vLength; i++)
if (vBuffer[i] == 0)
{
Strings.Add(Encoding.Default.GetString(vBuffer, j, i - j));
j = i + 1;
}
return true;
} /// <summary>
/// 删除指定区域。
/// </summary>
/// <param name="Section">指定区域名。</param>
/// <returns>返回删除是否成功。</returns>
public override bool EraseSection(string Section)
{
return WritePrivateProfileString(Section, null, null, FileName);
} /// <summary>
/// 删除指定变量。
/// </summary>
/// <param name="Section">变量所在区域。</param>
/// <param name="Ident">变量标识。</param>
/// <returns>返回删除是否成功。</returns>
public override bool DeleteKey(string Section, string Ident)
{
return WritePrivateProfileString(Section, Ident, null, FileName);
} /// <summary>
/// 更新文件。
/// </summary>
/// <returns>返回更新是否成功。</returns>
public override bool UpdateFile()
{
return WritePrivateProfileString(null, null, null, FileName);
}
}
}//通过SectionExists()可以知道
By Alvaro Mendez
http://www.codeproject.com/csharp/readwritexmlini.asp