Un StreamWriter sert à écrire du texte à un ruisseau. Il utilise toujours un encodage et si vous n'en spécifiez pas lors de sa création, il utilisera UTF-8 (sans marque d'ordre d'octet - BOM). La sortie que vous obtenez est l'encodeur UTF-8 essayant de traduire le texte (sous la forme de caractères individuels) en UTF-8.
Si vous voulez écrire des octets à un flux écrivez simplement dans le flux directement en utilisant le Write méthode qui accepte un tableau d'octets. Si vous voulez écrire dans un fichier, vous pouvez créer un FileStream et utilisez-le comme flux.
Le nommage des classes dans le System.IO l'espace de noms peut parfois prêter à confusion :
Streamest une classe de base abstraite fournissant des méthodes pour lire et écrire des octetsFileStreamest unStreamqui lit et écrit dans un fichierBinaryWritervous permet d'écrire des types primitifs sous forme binaire dans unStreamTextWriterest une classe de base abstraite qui vous permet d'écrire du texteStreamWriterest unTextWriterqui vous permet d'écrire du texte dans unStream
Vous devriez probablement utiliser FileStream ou BinaryWriter au-dessus d'un FileStream pour résoudre votre problème.