J'essaie d'écrire un Byte[]
tableau représentant un fichier complet dans un fichier.
Le fichier d'origine du client est envoyé via TCP puis reçu par un serveur. Le flux reçu est lu dans un tableau d'octets puis envoyé pour être traité par cette classe.
Il s'agit principalement de s'assurer que la réception TCPClient
est prête pour le flux suivant et de séparer l'extrémité de réception de l'extrémité de traitement.
La FileStream
classe ne prend pas un tableau d'octets comme argument ou autre objet Stream (ce qui vous permet d'y écrire des octets).
Je vise à obtenir le traitement effectué par un thread différent de l'original (celui avec le TCPClient).
Je ne sais pas comment implémenter cela, que dois-je essayer?
BinaryWriter
est jetable donc devrait probablement être utilisé dans unusing
bloc. Cela signifierait également que vous pourriez probablement laisser de côté certains des appels supplémentaires, car le code source montre qu'il effectue un certain nettoyage lors de l'élimination.Il existe une méthode statique
System.IO.File.WriteAllBytes
la source
Vous pouvez le faire en utilisant ce
System.IO.BinaryWriter
qui prend un Stream de la manière suivante:la source
Flush()
avantClose()
car celaClose()
va vider. Encore mieux est d'utiliser uneusing
clause qui sera également flush'n'close.Vous pouvez utiliser la méthode FileStream.Write (tableau d'octets [], int offset, int count) pour l'écrire.
Si le nom de votre tableau est "myArray", le code le serait.
la source
Oui, pourquoi pas?
la source
Essayez BinaryReader:
la source