读取第二行并从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
您可以跳过第一行,不做任何操作,所以调用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();