Построчное чтение из файла 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() в каждой итерации цикла, тем самым получая каждый раз следующую строку из потока данных файла.

→ Ссылка