Я пишу atm, инструмент для чтения потоков, и у меня возникла следующая проблема. Я прочитал строку с помощью ReadLine (); Затем поток продолжается со следующей строки. Но мне нужна информация о последнем символе (особенно если это NewLine или Linefeed) из строки до.
Это мой подход:
Я пробовал несколько подходов, с readblock или около того. Но похоже, что сам поток не позволяет мне вернуться в исходное положение, разобрать нужные мне элементы.
off = 0;
FileStream stream = new FileStream(filename, FileMode.Open);
using (StreamReader content = new StreamReader(stream, Encoding.UTF8))
{
String s = "";
while ((s = content.ReadLine()) != null)
{
content.BaseStream.Seek((a == 0)? off: off - 1, SeekOrigin.Begin);
//content.BaseStream.Seek(off, SeekOrigin.Current);
var c=content.Peek();
char b = (char)c;
data = s;
maxlist.Add(data.Length);
if (data != null)
{
offset = offset + (data.Length)+2;
offsetindex.Add(offset);
}
a++;
off = off + data.Length - 2;
}
content.Close();
}
Ожидаемый вывод должен быть таким, чтобы я мог получить доступ к строке выше после вызова Readline. Так что я могу читать с помощью ReadBlock последние элементы, которые мне нужны для точного позиционирования в потоке.