Un tableau Byte peut-il être écrit dans un fichier en C #?

J’essaie d’écrire un tableau Byte[] 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 stream reçu est lu sur un tableau d’octets, puis envoyé pour être traité par cette classe.

Cela permet principalement de s’assurer que le TCPClient récepteur est prêt pour le prochain stream et de séparer l’extrémité récepsortingce de la fin du traitement.

La classe FileStream ne prend pas un tableau d’octets en tant qu’argument ou autre object Stream (ce qui vous permet d’y écrire des octets).

Je cherche à obtenir le traitement effectué par un thread différent de celui d’origine (celui avec le TCPClient).

Je ne sais pas comment mettre en œuvre cela, que dois-je essayer?

Basé sur la première phrase de la question: “J’essaie d’écrire un tableau Byte [] représentant un fichier complet dans un fichier.”

Le chemin de moindre résistance serait:

 File.WriteAllBytes(ssortingng path, byte[] bytes) 

Documenté ici:

System.IO.File.WriteAllBytes – MSDN

Vous pouvez utiliser un object BinaryWriter .

 protected bool SaveData(ssortingng FileName, byte[] Data) { BinaryWriter Writer = null; ssortingng Name = @"C:\temp\yourfile.name"; try { // Create a new stream to write to the file Writer = new BinaryWriter(File.OpenWrite(Name)); // Writer raw data Writer.Write(Data); Writer.Flush(); Writer.Close(); } catch { //... return false; } return true; } 

Edit: Oups, j’ai oublié la dernière partie … disons que c’est laissé comme un exercice pour le lecteur 😉

Il existe une méthode statique System.IO.File.WriteAllBytes

Vous pouvez le faire en utilisant System.IO.BinaryWriter qui prend un stream pour:

 var bw = new BinaryWriter(File.Open("path",FileMode.OpenOrCreate); bw.Write(byteArray); 

Vous pouvez utiliser la méthode FileStream.Write (byte [] array, int offset, int count) pour l’écrire.

Si le nom de votre tableau est “myArray”, le code serait.

 myStream.Write(myArray, 0, myArray.count); 

Ouais, pourquoi pas?

 fs.Write(myByteArray, 0, myByteArray.Length); 

Essayez BinaryReader:

 ///  /// Convert the Binary AnyFile to Byte[] format ///  ///  ///  public static byte[] ConvertANYFileToBytes(HttpPostedFileBase image) { byte[] imageBytes = null; BinaryReader reader = new BinaryReader(image.InputStream); imageBytes = reader.ReadBytes((int)image.ContentLength); return imageBytes; } 
 public ActionResult Document(int id) { var obj = new CEATLMSEntities().LeaveDocuments.Where(c => c.Id == id).FirstOrDefault(); ssortingng[] ssortingngParts = obj.FName.Split(new char[] { '.' }); ssortingng strType = ssortingngParts[1]; Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("content-disposition", "attachment; filename=" + obj.FName); var asciiCode = System.Text.Encoding.ASCII.GetSsortingng(obj.Document); var datas = Convert.FromBase64Ssortingng(asciiCode.Subssortingng(asciiCode.IndexOf(',') + 1)); //Set the content type as file extension type Response.ContentType = strType; //Write the file content this.Response.BinaryWrite(datas); this.Response.End(); return new FileStreamResult(Response.OutputStream, obj.FType); }