如何从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";

如何从ini文件中读取设置

变量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文件