首页 > 解决方案 > 如何在 C# 中读取文件的特定行

问题描述

我正在尝试读取文件,但我需要控制文件中的行号。我尝试使用 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();
        }

    }

它是一种形式,设计是西班牙语。

请问有人可以帮助我吗?

标签: c#formsstreamreader

解决方案


您可以使用File.ReadLines()which 返回一个IEnumerable<string>. 然后,您可以使用 LINQSkip()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
    }
}

推荐阅读