@Sushkov
">alert("yohoho")

Как через StreamReader считать строку с определенной позиции?

Использую многопоточность и мне нужно считывать из фала строки по очереди, грузить в память плохо. Как это сделать? У меня пока только 1 вариант, каждый раз пробегать циклом до нужного элемента. Можно ли как-то лучше сделать?
  • Вопрос задан
  • 538 просмотров
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C#
1) первым проходом строим "индекс" - сохраняем в списке начала всех строк (в смысле, номер байта в потоке);
2) дальнейшие чтения делаем с помощью индекса;

Это будет быстрее постоянного прохода заново с начала файла. При построении индекса весь файл грузить в память не нужно, хотя понятно, что надо оценить размер этого индекса относительно количества строк и средней длины строки.
Ответ написан
Комментировать
@VZVZ
Reverse-Engineer, Software Developer, Architect
StreamReader хз, а BinaryReader - сто пудов может. Обычно такая функция называется seek.
Только она задает не строку, а положение каретки.

Может, лучше готовую БД применить? В них тот же принцип как раз.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы