public class IniFile
{
[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);
[DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
private static extern uint GetPrivateProfileStringA(string section, string key,
string def, Byte[] retVal, int size, string filePath);
public static List<string> ReadSections(string iniFilename)
{
List<string> result = new List<string>();
Byte[] buf = new Byte[65536];
uint len = GetPrivateProfileStringA(null, null, null, buf, buf.Length, iniFilename);
int j = 0;
for (int i = 0; i < len; i++)
if (buf[i] == 0)
{
result.Add(Encoding.Default.GetString(buf, j, i - j));
j = i + 1;
}
return result;
}
public List<string> ReadKeys(String SectionName)
{
return ReadKeys(SectionName, IniFilePath);
}
public static List<string> ReadKeys(string SectionName, string iniFilename)
{
List<string> result = new List<string>();
Byte[] buf = new Byte[65536];
uint len = GetPrivateProfileStringA(SectionName, null, null, buf, buf.Length, iniFilename);
int j = 0;
for (int i = 0; i < len; i++)
if (buf[i] == 0)
{
result.Add(Encoding.Default.GetString(buf, j, i - j));
j = i + 1;
}
return result;
}
public string IniFilePath = Application.StartupPath + @"\Config\StationConfig.cfg";
static object LockedObj = new object();
public void IniWriteValue(string Section, string Key, string Value)
{
lock (LockedObj)
{
WritePrivateProfileString(Section, Key, Value, this.IniFilePath);
}
}
public string IniReadValue(string Section, string Key)
{
lock (LockedObj)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section, Key, "", temp, 500, this.IniFilePath);
return temp.ToString();
}
}
}
c# Ini 文件访问
最新推荐文章于 2023-03-29 19:35:33 发布