c# - 如何在 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();
}
}
它是一种形式,设计是西班牙语。
请问有人可以帮助我吗?
解决方案
您可以使用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
}
}
推荐阅读
- java - 在 Java 中覆盖匿名类的方法
- node.js - MS Teams 机器人的发送消息吞吐量是多少?
- angular - 专注于 ngselect on empty using 指令
- android - Android 登录到服务器
- gradle - gradle 找不到 flatDirs 文件
- flutter - 值更改时如何在 Flutter 上重绘小部件?
- android - 如何在android中以编程方式设置android:id?
- java - 问题可能是由于守护程序配置不正确引起的
- shopify - 如何通过购物车在结帐页面上显示额外的订单信息?
- java - 线程“main”中的异常 java.lang.NoClassDefFoundError: io/cucumber/messages/Messages$Envelope