Не понял. Что копировать?
Вероятно я плохо объяснил.
Задача.
Прочитать построчно часть текстового файла. Именно построчно - строка за строкой. Ее (эту часть) нужно найти сначала, т.к. она может быть не с начала файла. Что-то с прочитанным сделать.
Затем прочитать так же другую часть. Эта другая часть неизвестно где - возможно до предыдущей прочитанной части. Ее (эту вторую часть) тоже нужно найти сначала. Т.е. нужно по новой с начала начать читать файл. Построчно.
Я сейчас делаю так:
byte[] buf;
using (FileStream fs = new FileStream("file.txt", FileMode.Open))
{
buf = new byte[fs.Length];
fs.Read(buf, 0, (int)fs.Length);
}
using (MemoryStream ms = new MemoryStream(buf))
{
using (StreamReader sr = new StreamReader("ms"))
{
foreach (string data in dataArray)
{
sr.BaseStream.Seek(0, SeekOrigin.Begin);
sr.DiscardBufferedData();
_dataes.Add(data, new Data(sr, data));
}
}
}
В конструкторе Data ищу нужный кусок по имени (data) и читаю/парсю его во внутренние переменные класса Data.
Т.е. сначала читаю весь файл в буфер, затем из буфера делаю StreamReader и уже его использую.
Мне это не нравится. Есть ли способ нормаль менять позицию чтения в StreamReader, не сбрасывая его внутренний буфер? Или может есть способ читать из потока (MemoryStream/FileStream) по строкам (как это делает StreamReader) не городя огород со своим разбором Encoding и т.п.