Содержимое файла ab c .txt:
ABCDEFGHIJ•XYZ
Теперь показанный символ - это хорошо, если я использую этот код (т. Е. Искать в позиции 9),
string filePath = "D:\\abc.txt";
FileStream fs = new FileStream(filePath, FileMode.Open);
StreamReader sr = new StreamReader(fs, new UTF8Encoding(true), true);
sr.BaseStream.Seek(9, SeekOrigin.Begin);
char[] oneChar = new char[1];
char ch = (char)sr.Read(oneChar, 0, 1);
MessageBox.Show(oneChar[0].ToString());
Но если позиция SEEK находится сразу после этого специального символа Dot, тогда я получаю символ барахла.
Итак, я получаю символ барахла, если я делаю Seek в позицию 11 (то есть сразу после позиции точки)
sr.BaseStream.Seek(11, SeekOrigin.Begin);
Это должно дать 'X', потому что символ на 11-й позиции - X.
Я думаю, что содержимое файла юридически UTF8.
Есть еще одна вещь, Длина StreamReader BaseStream и длина содержимого StreamReader различны.
MessageBox.Show(sr.BaseStream.Length.ToString());
MessageBox.Show(sr.ReadToEnd().Length.ToString());