我正在使用C#并为Windows 7或Windows 8编写Windows窗体应用程序。
我需要知道如何让我的应用读取应分配给特定文本框或组合框的特定行。
这是我到目前为止的代码。
using (StreamReader QNARead = new StreamReader(TestPath))
if (QNARead.Peek() >= 0)
{
string Line1 = QNARead.ReadLine();
QuestionText1.Text = Line1;
string Line2 = QNARead.ReadLine();
QuestionText2.Text = Line2;
string Line3 = QNARead.ReadLine();
AlternativesList1.Items.Add(Line3);
}
但是使用这种方法我必须阅读很多行,因为该行可能是文本文件中的第500行。 (我确实知道确切的行号,例如54)。
答案 0 :(得分:3)
我曾用过这个来读取文本文件中的特定行:
string filename = "test.txt";
if (File.Exists(filename))
{
string[] lines = File.ReadAllLines(filename);
Console.WriteLine(lines[5]);
}
其中5可以替换为任何行号(基于零)。
答案 1 :(得分:2)
由于文件只是一个字节列表,因此您需要知道要读取多远才能获得所需的行。
除非行是固定的(或可预测的)长度,或者你有某种单独的索引,否则你需要读取每行所需的行。从代码的角度来看,您可以使其相当整洁,例如在Framework 4.0中:
string line54 = File.ReadLines(FileName).Skip(53).Take(1).First();
请注意,此时,您没有利用读取前面跳过的行,因此更有效的方法是继续读取循环,直到到达所需的最后一行。