public class INIReadWrite
{
[DllImport("kernel32")]
private static extern uint GetPrivateProfileString(string strSection, string strKey, string strValue, byte[] ReturnedString, uint size, string strFilePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string strSection, string strKey, string strValue, StringBuilder ReturnedString, int size, string strFilePath);
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string strSection, string strKey, string strValue, string strFilePath);
public List<string> ReadSections(string strINIFilePath)
{
List<string> list = new List<string>();
byte[] array = new byte[65536];
uint privateProfileString = INIReadWrite.GetPrivateProfileString(null, null, null, array, (uint)array.Length, strINIFilePath);
int num = 0;
int num2 = 0;
while ((long)num2 < (long)((ulong)privateProfileString))
{
if (array[num2] == 0)
{
string @string = Encoding.Default.GetString(array, num, num2 - num);
list.Add(@string);
num = num2 + 1;
}
num2++;
}
return list;
}
public List<string> ReadSectionKeys(string strSection, string strINIFilePath)
{
List<string> list = new List<string>();
byte[] array = new byte[65536];
uint privateProfileString = INIReadWrite.GetPrivateProfileString(strSection, null, null, array, (uint)array.Length, strINIFilePath);
int num = 0;
int num2 = 0;
while ((long)num2 < (long)((ulong)privateProfileString))
{
if (array[num2] == 0)
{
string @string = Encoding.Default.GetString(array, num, num2 - num);
list.Add(@string);
num = num2 + 1;
}
num2++;
}
return list;
}
public string ReadSectionKeyValue(string strSection, string strKey, string strINIFilePath)
{
StringBuilder stringBuilder = new StringBuilder(1024);
INIReadWrite.GetPrivateProfileString(strSection, strKey, null, stringBuilder, 1024, strINIFilePath);
return stringBuilder.ToString();
}
public int WriteToINI(string strSection, string strKey, string strValue, string strINIFilePath)
{
int result;
if (File.Exists(strINIFilePath))
{
long num = INIReadWrite.WritePrivateProfileString(strSection, strKey, strValue, strINIFilePath);
if (num == 0L)
{
result = 1;
}
else
{
result = 0;
}
}
else
{
result = 2;
}
return result;
}
public string strINIFilePath;
}
C# ini文件读写
最新推荐文章于 2023-09-25 09:57:59 发布