есть ли способ удалить первую строку из StreamReader

у меня есть потоковое чтение, которое загружает CSV-файл, проблема в том, что в верхней части данных есть одна дополнительная строка, которую я хочу игнорировать.

Я использую проект CSVReader, который хорош, но

 csv.GetFieldHeaders(); 

всегда смотрит на первый ряд. Вместо того, чтобы заходить в исходный код CSVReader и изменять его, я подумал, что было бы проще, если бы я мог «вырезать» эту первую строку из самого потокового считывателя, прежде чем вводить ее в csvReader. Это возможно?


person leora    schedule 28.06.2010    source источник


Ответы (3)


Просто прочитайте строку из SR, прежде чем передать ее конструктору CSVReader. Например:

using (var sr = new StreamReader("data.csv")) {
    sr.ReadLine();
    using (var csv = new CsvReader(sr, true)) {
        // etc..
    }
}
person Hans Passant    schedule 28.06.2010

Простейшим способом было бы просто вызвать ReadLine() самостоятельно, прежде чем передать читателю CSVReader.

person Jon Skeet    schedule 28.06.2010

StreamReader — это виртуальный класс, поэтому вы можете создать унаследованный класс, который делегирует все важные функции некоторому базовому классу StreamReader, за исключением того, что он пропускает первую строку текста (или вы можете наследовать от типа TextReader). Если CSVReader принимает StreamReader или TextReader в качестве аргумента, это должно работать нормально.

person Tomas Petricek    schedule 28.06.2010