Ich versuche, ein Byte[]
Array, das eine vollständige Datei darstellt, in eine Datei zu schreiben .
Die Originaldatei vom Client wird über TCP gesendet und dann von einem Server empfangen. Der empfangene Stream wird in ein Byte-Array gelesen und dann zur Verarbeitung durch diese Klasse gesendet.
Dies dient hauptsächlich dazu, sicherzustellen, dass der Empfang TCPClient
für den nächsten Stream bereit ist, und das Empfangsende vom Verarbeitungsende zu trennen.
Die FileStream
Klasse verwendet kein Byte-Array als Argument oder ein anderes Stream-Objekt (mit dem Sie Bytes darauf schreiben können).
Ich möchte, dass die Verarbeitung von einem anderen Thread als dem Original (dem mit dem TCPClient) durchgeführt wird.
Ich weiß nicht, wie ich das implementieren soll. Was soll ich versuchen?
BinaryWriter
ist wegwerfbar und sollte daher wahrscheinlich innerhalb einesusing
Blocks verwendet werden. Das würde auch bedeuten, dass Sie wahrscheinlich einige der zusätzlichen Anrufe weglassen könnten, da der Quellcode anzeigt, dass beim Entsorgen eine Bereinigung durchgeführt wird.Es gibt eine statische Methode
System.IO.File.WriteAllBytes
quelle
Sie können dies tun, indem Sie
System.IO.BinaryWriter
einen Stream verwenden, also:quelle
Flush()
vorClose()
wieClose()
spült. Noch besser ist es, eineusing
Klausel zu verwenden , die auch spült und schließt.Sie können die Methode FileStream.Write (Array byte [], int offset, int count) verwenden, um sie zu schreiben.
Wenn Ihr Array-Name "myArray" lautet, lautet der Code.
quelle
Ja, warum nicht?
quelle
Probieren Sie BinaryReader aus:
quelle