c# - C#中如何读取文件的特定行

标签 c# forms streamreader

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

如前所述,这将设置 linenull如果该行没有超出文件末尾。


如果您必须使用 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/

相关文章:

c# - Silverlight ValidationSummary 不保留具有相同名称的 ListBox 元素的失败

c# - 在Unity中,如何使用脚本访问预制件的子组件?

php - 刚刚完成了图像上传 php mysql

c# - 如果我们将数据存储在 .txt 文件中,如何验证和返回数据?

C# StreamReader, "ReadLine"用于自定义分隔符

c# - HL7 ORM_o01 nHapi 上的 OBR 重复

c# - 从无线连接的 Arduino 异步绘制数据的最佳库或方法

c# - 使用 HtmlAgilityPack .NET 解析出 iframe 中的隐藏字段

javascript - 验证多个 URL 输入字段

vb.net - 从 StreamReader VB.Net 读取两行