Построчное чтение из файла c#
Такая проблема, сделал метод который из файла берет значения и создает матрицу (класс матриц). Файл в первой строке содержит размерность матрицы, например "3 3"(две цифры через пробел), затем идут уже сами строки и значения матрицы.
public static Matrix SetMatrix(string path)
{
using (StreamReader sr = new StreamReader(path))
{
string line = sr.ReadLine();
var size = line.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
Matrix a = new Matrix(Int32.Parse(size[0]), Int32.Parse(size[1]));
for (int i = 0; i < a.Row; i++)
{
var values = line.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
for (int j = 0; j < a.Column; j++)
{
a[i, j] = Double.Parse(values[j]);
}
}
return a;
}
}
Сначала метод считывает первую строку и создает затем матрицу по размеру. Затем в цикле должен считывать значения и заполнять матрицу. Я рассчитывал что в цикле читаться начнет со второй строки, так как я первую уже считал, но он начинает снова с первой строки. Как мне сделать так, чтобы потом считываться началось со второй? Или так не пойдет, и переделать так, чтобы сначала считались все данные, а потом уже на основе массива создавать и заполнять матрицу? (но это лишнее создание массива...). Помогите пожалуйста.

Ответы (1 шт):
Выдержка из документации:
метод
StreamReader.ReadLineвыполняет чтение строки символов из текущего потока и возвращает данные в виде строки.
Вы читаете всего лишь одну строку при помощи данного метода и на этом останавливаетесь, поэтому следующей строке неоткуда взяться.
Решение проблемы:
Вызывать данный метод sr.ReadLine() в каждой итерации цикла, тем самым получая каждый раз следующую строку из потока данных файла.