如何从ini文件中读取设置
本文关键字:读取 设置 文件 ini | 更新日期: 2023-09-27 18:15:09
我有一个文本文件installer.ini
,其中我有一行像:fileExecutable=D:'location
。我想在=
之后得到文本,并放入一个变量。之后,我想在代码中使用该变量而不是D:'location
。
foreach (var txt in lin)
{
if (txt.Contains("fileExecutable="))
{
var ExeFile = txt.Split('=')[1];
}
}
// The installer itself
process.StartInfo.FileName = @"D:'location";
process.StartInfo.Arguments = @"-if C:'temp'installer.ini";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
}
我试着在fileExecutable=
之后的文本文件中放入变量ExeFile
并在这一行使用该变量:process.StartInfo.FileName = @"D:'location";
变量ExeFile
是在foreach
循环中声明的,因此在循环结束后不可用。如果您将它移出循环,则可以在循环后使用它。
var ExeFile = String.Empty;
foreach (var txt in lin)
{
if (txt.Contains("fileExecutable="))
{
ExeFile = txt.Split('=')[1];
}
}
if (!String.IsNullOrEmpty(ExeFile))
{
// The installer itself
process.StartInfo.FileName = ExeFile;
process.StartInfo.Arguments = @"-if C:'temp'installer.ini";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
}
编辑选择
您可以在整个INI-file中使用正则表达式来跳过所有行的循环,如下所示:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
// dummy ini for testing.
var ini = "test'nfileExecutable=D:''location'ntest";
var regex = new Regex("^fileExecutable=(.+)$", RegexOptions.Multiline);
var location = regex.Match(ini).Groups[1];
Console.WriteLine(location);
}
}
EDIT另一个选择
在编辑你的问题的标题之后,我想到你可能也想从ini中读取其他设置。如果是这样,请考虑使用下面讨论的INI阅读器:读取/写入INI文件