StreamReader returning another char
- by Fernando
I'm trying to read the content of a file with a StreamReader, that receives a FileStream. The file has some spaces inside (char 32) and the StreamReader is reading them as 0 (char 48). The screenshot shows the FileStream buffer and the StreamReader buffer. Both have the value 32, but when I call Read(), it returns 48. Am I missing something here? By the way, the code is running under .NET Compact Framework.
The code that reads the data:
public void Read() {
    using (StreamReader reader = new StreamReader(InputStream, Encoding.ASCII)) {
        foreach (var property in DataObject.EnumerateProperties()) {
            OffsetInfo offset = property.GetTextOffset();
            reader.BaseStream.Position = offset.Start - 1;
            StringBuilder builder = new StringBuilder(offset.Size);
            int count = 0;
            while (reader.Peek() >= 0 && count < offset.Size) {
                char c = (char)reader.Read();
                if ((int)c != 32 && c != '\r' && c != '\n')  {
                    builder.Append(c);
                    count++;
                } else {
                    reader.BaseStream.Position++;
                }
            }
            property.SetValue(DataObject,
                Convert.ChangeType(builder.ToString(), property.PropertyType, CultureInfo.CurrentCulture),
                null
            );
        }
    }
}