StreamWriter е за писане на текстната към поток. Винаги използва кодиране и ако не посочите такова, когато го създавате, ще използва UTF-8 (без знак за ред на байтовете - BOM). Резултатът, който получавате, е UTF-8 енкодерът, който се опитва да преведе текста (под формата на отделни знаци) в UTF-8.
Ако искате да пишете байтове към поток просто пишете в потока директно с помощта на Write метод, който приема масив от байтове. Ако искате да пишете във файл, можете да създадете FileStream и го използвайте като поток.
Именуването на класове в рамките на System.IO пространството от имена понякога може да бъде объркващо:
Streamе абстрактен базов клас, предоставящ методи за четене и запис на байтовеFileStreamеStreamкойто чете и записва във файлBinaryWriterви позволява да пишете примитивни типове в двоична форма вStreamTextWriterе абстрактен базов клас, който ви позволява да пишете текстStreamWriterеTextWriterкойто ви позволява да пишете текст вStream
Вероятно трябва да използвате FileStream или BinaryWriter върху FileStream за да разрешите проблема си.