C# INI中的每个部分应以空行分隔
我正在使用C# INI中的每个部分应以空行分隔,c#,ini,C#,Ini,我正在使用WritePrivateProfileStringkernal32函数写入INI文件 但当我写入INI文件时,该部分仅如下所示 [Section1] Key1 = value1 key2 = value2 [Section2] Key1 = value1 key2 = value2 现在,我正在寻找解决方案,以单独的部分如下 [Section1] Key1 = value1 key2 = value2 [Section2] Key1 = value1 key2 = value2
WritePrivateProfileString
kernal32函数写入INI文件
但当我写入INI文件时,该部分仅如下所示
[Section1]
Key1 = value1
key2 = value2
[Section2]
Key1 = value1
key2 = value2
现在,我正在寻找解决方案,以单独的部分如下
[Section1]
Key1 = value1
key2 = value2
[Section2]
Key1 = value1
key2 = value2
我只是写了几个键到现有的INI文件,所以我不想使用任何第三方代码。
在我的例子中,也不建议以文本模式打开现有文件并显式放置空行
请告知是否有任何kernel32函数以这种方式放置/写入节,或者是否有任何标准的方法来执行相同的操作
<> P>>如果已经存在空格,应该足够聪明。 < P>我已经通过使用<代码>环境。请参阅以下代码: INI类
INIClass.cs
:
[DllImport("kernel32.dll", EntryPoint = "WritePrivateProfileString", CharSet = CharSet.Unicode)]
private static extern long WriteValueA(string section, string key, string val, string filePath);
public void IniWriteValue(string Section, string Key, string Value)
{
WriteValueA(Section, Key, Value, this.path);
}
现在是我调用InWriteValue
时的部分
INIClass objINI = new INIClass();
objINI.IniWriteValue("Section1", "Key1", Value1 );
objINI.IniWriteValue("Section1", "Key2", Value2 + Environment.NewLine);
objINI.IniWriteValue("Section2", "Key1", Value1 );
结果如下:
[Section1]
Key1 = Value1
Key2 = Value2
[Section2]
Key1 = Value1
注意:INI文件的物理路径是在类级别提供的。我已经完全在c#(MIT许可证)中创建了一个IniParser库 也可以作为NuGet软件包提供 是的;默认行为会根据您的要求在节之间追加一行,但如果您不喜欢,可以根据需要格式化数据。格式化程序是最新的功能,如果您最终使用它,请随时提供反馈:) 例如,要在运行时以示例的格式编写数据,只需执行以下操作
var data = new IniData();
data["Section1"]["Key1"] = value1;
data["Section1"]["Key2"] = value2;
data["Section2"]["Key1"] = value1;
data["Section2"]["Key2"] = value2;
// Now you can get the ini data as an string
var str = data.ToString();
// or persists it to a file
var fileIniData = new FileIniDataParser();
fileIniData.WriteFile("path/to/file.ini", data);
我希望它能对你有所帮助。你到底为什么要关心这个?INI文件不是被设计成漂亮的,它们被设计成实用的。“如果已经存在的话,它应该足够智能来考虑空白行。”你的解决方案符合这个标准吗?不。这就是为什么我提到“我是如何做到这一点”的。这可能对海报有帮助。Hi@Hassansar:谢谢,但这对我没有帮助,添加换行符会在每次运行时添加额外的空行,在我的情况下,我永远不知道我将要编写的最后一个键,因为它基于运行时可用的数据。我需要的东西,应该准确地确定部分和增加额外的行后,每个部分,如果不存在。(可能是我需要进行的手动C#编码)您是否选中了
GetPrivateProfileSection()
?此函数检索初始化文件指定部分的所有键和值。
但仍需要遍历所有部分。此链接可能会有所帮助。