我正在尝试读取一个文件,但我需要控制文件中的行号。 我尝试使用 StreamReader.ReadLine 方法,但我无法控制行号。
这是我的代码:
private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
{
string line;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamReader sr = new
StreamReader(openFileDialog1.FileName);
//Read specified line with StreamReader
sr.Close();
}
}
它是一种形式,设计是西类牙语。
请问有人能帮帮我吗?
最佳答案
您可以使用 File.ReadLines()
返回 IEnumerable<string>
.然后您可以使用 LINQ 的 Skip()
和 FirstOrDefault()
跳过所需行数并获取第一项的方法(如果没有更多项,则返回 null):
line = File.ReadLines().Skip(lineNumber - 1).FirstOrDefault()
Jeppe 评论说这也可以这样写:
line = File.ReadLines().ElementAtOrDefault(lineNumber - 1);
我使用 lineNumber - 1
因为它是跳过行,所以你想指定Skip(0)
对于第 1 行。
如前所述,这将设置 line
至 null
如果该行没有超出文件末尾。
如果您必须使用 StreamReader
, 那么你所能做的就是调用 ReadLine()
在循环中,直到到达所需的行号或文件末尾:
line = null;
for (int i = 0; i < lineNumber; ++i)
{
if ((line = sr.ReadLine()) == null)
{
break; // end of file reached
}
}
关于c# - C#中如何读取文件的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51222013/