【发布时间】:2012-03-29 23:40:41
【问题描述】:
我的 ini 文件没有任何部分。它有以下数据
com.ibm.rcp.toolbox.admin/toolboxvisibleChild=false com.ibm.collaboration.realtime.community/defaultAuthType=ST-DOMINO-SSO com.ibm.collaboration.realtime.brokerbridge/startBroker=false com.ibm.collaboration.realtime.webapi/startWebContainer=true我想使用函数。
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,
string key,string def, StringBuilder retVal,
int size,string filePath);
我的问题
- 我无法在函数中给出部分名称,因为我没有任何名称
- 如果我将部分名称设为 null,则不会返回任何内容
- 我不想使用 ReadAllText 这样的蛮力
【问题讨论】:
-
如果你为节名传入一个空白字符串而不是 null 会发生什么?
-
什么是GetPrivateProfileString,是外部库吗?
-
GetPrivateProfileString 和 WritePrivateProfileString 不适用于未格式化为 .ini 文件的文件 - 即缺少 [section]。 “空”并不意味着“没有部分”。它在文档中说在这里。 msdn.microsoft.com/en-us/library/windows/desktop/… 如果您想使用这种格式,我认为您可能必须编写自己的解析器(对我来说似乎还不错)或找到已经完成的开源代码。附言GetPrivateProfileString 是用于读取 INI 文件的旧 Windows API (@MattDavey)。
-
我知道你说过你不想“蛮力”它,但是......你能把
=上的每一行分开吗,左边是名字,右边是价值?如果你知道你的 .ini 文件永远不会有任何部分,并且没有像引用或转义等号这样的问题需要处理,那应该很容易。GetPrivateProfileString可能不会做你想做的事,因为它似乎不接受null或string.Empty。