Warum BinaryWriter voranstellen Kauderwelsch zu Beginn von einem stream??? Wie vermeiden Sie es?

Ich bin Debuggen einiger Probleme mit dem schreiben von Stücken von einem Objekt in eine Datei, und ich habe, bis auf die Basis bei nur öffnen der Datei und das schreiben von "TEST". Ich bin dabei so was wie:

static FileStream fs;
static BinaryWriter w;
fs = new FileStream(filename, FileMode.Create);
w = new BinaryWriter(fs);

w.Write("test");

w.Close();
fs.Close();

Leider, endet dies voranstellen von einem Kästchen vor der Datei, und es sieht so aus:

TEST, mit einer fun-box auf der Vorderseite. Warum ist das so und wie kann ich Sie vermeiden?

Edit: Es scheint sich nicht um die Anzeige der box hier, aber es ist das unicode-Zeichen, das sieht aus wie Kauderwelsch.

Ich werde darauf drängen den Inhalt vieler Dateien in diese Datei werden später gelesen. Allerdings möchte ich überprüfen, dass die Datei beginnt mit "TEST", ansonsten werde ich nicht die Datei Lesen.
Um tatsächlich Ihre Frage zu beantworten: der binäre Autor schreibt aus einer binären Zeichenfolge, indem Sie es mit der Länge der Zeichenfolge. So werden die binary - reader weiß, wie viel string-Daten es als Nächstes kommen wird.
Wenn das, was Sie tun möchten, schreiben Sie die Zeichenfolge als ein array von Zeichen, und nicht als string, dann versuchen Sie w.Write("test".ToCharArray()); zwingen der Schriftsteller zu schreiben Sie das Zeichen als array und nicht als ein Länge-Präfix-string.
Es gibt viele Möglichkeiten, um es. Sie können schreiben, ein char-array, können Sie schreiben, die ein byte-array, können Sie aus vier einzelnen bytes, die Sie tun können, was Sie wollen. Sie Steuern das format der Binär-Datei, wenn Sie nicht wie die Standard-string-handling, gehen Sie voran und setzen Sie Ihre eigene.
Alternativ, Sie können Ihre reader-Programm prüfen Sie, dass die ersten FÜNF bytes 04 74 65 73 74.

InformationsquelleAutor Chris | 2009-09-28

Schreibe einen Kommentar