Вы не можете передать номер строки ReadLine
и ожидать, что он найдет эту конкретную линию. Если вы посмотрите на ReadLine
documentation, вы увидите, что он не принимает никаких параметров.
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();
// etc..
}
Если вы действительно хотите, чтобы написать метод 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();
// Do something
}
}
Или получить все строки сразу, используя File
класс ReadAllLines
method:
string[] lines = System.IO.File.ReadAllLines("c:\\test.txt");
for (int i = 0; i < lines.Length; i++)
{
string line = lines[i];
// Do something
}