使用'File.ReadAllText'从ini文件中读取值

时间:2013-08-01 15:05:36

标签: c# ini

我有一些ini文件包含此字符串:_DeviceName = #1234。现在我希望获得_DeviceName 1234值,但它会显示_DeviceName = #1234的完整字符串。 我试过这段代码:

if (File.Exists("inifile.ini"))
{
    if (File.ReadAllText("inifile.ini").Split('\r', '\n').First(st => st.StartsWith("_DeviceName")) != null)
    {
        string s = File.ReadAllText("inifile.ini").Split('\r', '\n').First(st => st.StartsWith("_DeviceName"));

        MessageBox.Show(s);

    }
}

4 个答案:

答案 0 :(得分:2)

您可以添加另一个拆分来获取值:

if (File.Exists("inifile.ini"))
{
    if (File.ReadAllText("inifile.ini").Split('\r', '\n').First(st => st.StartsWith("_DeviceName")) != null)
    {
        string s = File.ReadAllText("inifile.ini")
                   .Split('\r', '\n').First(st => st.StartsWith("_DeviceName"))
                   .Split('=')[1];
        MessageBox.Show(s);
    }
}

答案 1 :(得分:2)

您可以改用File.ReadAllLines。如果您正在做任何更复杂的事情,您可能希望查看现有的ini文件阅读器,但这应该有效。作为旁注,如此快速地拨打两个File.ReadAllText电话效率不高;在大多数情况下,最好只将结果存储在一个变量中。

if (File.Exists("inifile.ini"))
{
   string[] allLines = File.ReadAllLines("inifile.ini");
   string deviceLine = allLines.Where(st => st.StartsWith("_DeviceName")).FirstOrDefault();

   if(!String.IsNullOrEmpty(deviceLine))
   {
      string value = deviceLine.Split('=')[1].Trim();
      MessageBox.Show(value);
   }
}

答案 2 :(得分:0)

我制作了一个实现INI Reader / Writer的应用程序。源代码尚不可用,但继续检查,我将在几天内上传源(今天是2013年8月14日)。这个特殊的INI读卡器是CASE SENSITIVE,可能需要修改特殊字符,但到目前为止我没有遇到任何问题。

http://sourceforge.net/projects/dungeonchest/

答案 3 :(得分:-1)

一种肮脏的方式是使用 String.Replace(" _DeviceName =#","")