读取第二行并从txt C#中保存

本文关键字:txt 保存 二行 读取 | 更新日期: 2023-09-27 18:12:20

我要做的是只读取.txt文件中的第二行,并将其保存为字符串,以便稍后在代码中使用。

文件名为"SourceSetting"。在第1行和第2行,我有一些单词

对于第1行,我有这样的代码:

string Location;
StreamReader reader = new StreamReader("SourceSettings.txt");
{
    Location = reader.ReadLine();
}
ofd.InitialDirectory = Location;

这很好,但我如何使它只读取第二行,这样我就可以将其保存为例如:

string Text

读取第二行并从txt C#中保存

您可以跳过第一行,不做任何操作,所以调用ReadLine两次:

string secondLine:
using(var reader = new StreamReader("SourceSettings.txt"))
{
    reader.ReadLine(); // skip
    secondLine = reader.ReadLine();  
}

另一种方法是File类,它具有方便的方法,如ReadLines:

string secondLine = File.ReadLines("SourceSettings.txt").ElementAtOrDefault(1);

由于ReadLines也使用流,所以不能先将整个文件加载到内存中进行处理。Enumerable.ElementAtOrDefault只会占用第二行,不会处理更多行。如果少于两行,则结果为null

更新我建议使用Tim Schmelter解决方案。

当您调用ReadLine时,它会将传送带移动到下一行。所以在第二次通话时,你会读到第二行。

string Location;
using(var reader = new StreamReader("SourceSettings.txt"))
{
    Location = reader.ReadLine(); // this call will move caret to the begining of 2nd line.
    Text = reader.ReadLine(); //this call will read 2nd line from the file
}
ofd.InitialDirectory = Location;

不要忘记使用。

或者一个例子,如果您只需要文件中的一行,那么如何执行这个vi ReadLines of File类。但是ElementAtOrDefault的解决方案是最好的,因为Tim-Schmelter点。

var Text = File.ReadLines(@"C:'Projects'info.txt").Skip(1).First()

ReadLines和ReadAllLines方法的区别如下:ReadLines,您可以在则返回整个集合;使用ReadAllLines时,必须等待返回整个字符串数组,然后才能访问数组。因此,当您使用非常大的文件时,ReadLines可以更高效。

因此,与ReadAllLines相比,它不会将所有行读取到内存中。

使用Linq可以读取该行,如下所示。

var SecondLine = File.ReadAllLines("SourceSettings.txt").Skip(1).FirstOrDefault();
private string GetLine(string filePath, int line)
{
    using (var sr = new StreamReader(filePath))
    {
        for (int i = 1; i < line; i++)
             sr.ReadLine();
        return sr.ReadLine();
     }
 }

希望这将有所帮助:(

如果你知道你的第二行是唯一的,因为它包含一个特定的关键字,而这个关键字不会出现在你的文件中的其他地方,你也可以使用linq,好处是"第二"行将来可以是任何一行。

             var myLine = File.ReadLines("SourceSettings.txt")
            .Where(line => line.Contains("The Keyword"))
            .ToList();