你不能传递行号给ReadLine
并期望它找到特定的行。如果您查看ReadLine
文档,您会发现它不接受任何参数。
public override string ReadLine()
在处理文件时,您必须将它们视为数据的流。每次打开文件时,您都会从文件的第一个字节/字符开始。
var reader = new StreamReader("c:\\test.txt"); // Starts at byte/character 0
如果想要读取更多的行,您必须保持流处于打开状态。
using (var reader = new StreamReader("c:\\test.txt"))
{
string line1 = reader.ReadLine();
string line2 = reader.ReadLine();
string line3 = reader.ReadLine();
}
如果您真的想编写一个名为
NextLine
的方法,则需要在某个地方存储创建的
StreamReader
对象,并且每次都使用它。类似于这样:
public class MyClass : IDisposable
{
StreamReader reader;
public MyClass(string path)
{
this.reader = new StreamReader(path);
}
public string NextLine()
{
return this.reader.ReadLine();
}
public void Dispose()
{
reader.Dispose();
}
}
但我建议您循环读取流:
using (var reader = new StreamReader("c:\\test.txt"))
{
while (some_condition)
{
string line = reader.ReadLine();
}
}
或者使用 File
类的 ReadAllLines
方法 一次获取所有行:
string[] lines = System.IO.File.ReadAllLines("c:\\test.txt");
for (int i = 0; i < lines.Length; i++)
{
string line = lines[i];
}