Avatar ·

Comment créer un tableau d'octets à partir d'un flux (Stream) en C# ? Guide complet

Bonjour à tous ! Je suis débutant en C# et je travaille sur une application qui télécharge des fichiers depuis Internet. J'ai besoin de lire toutes les données d'un NetworkStream ou FileStream dans un tableau byte[]. Le problème est que je ne connais pas la taille du flux à l'avance. J'ai essayé d'utiliser la propriété Length, mais pour de nombreux flux, elle lève une exception NotSupportedException. Voici mon code actuel qui ne fonctionne pas :
// J'essaie de lire le flux dans un tableau d'octets
byte[] buffer = new byte[stream.Length]; // Erreur : 'Stream' does not support seeking
stream.Read(buffer, 0, buffer.Length);
Cette erreur se produit lorsque je travaille avec des flux réseau (NetworkStream) ou des flux provenant de réponses HTTP. Je comprends qu'il faut lire les données par parties, mais je ne sais pas comment organiser correctement la boucle. J'ai vu quelque chose à propos de MemoryStream, mais je ne suis pas sûr de comment l'utiliser. Pouvez-vous me dire comment convertir correctement et efficacement un Stream en tableau d'octets ? De préférence avec un exemple de code pour .NET 3.5 (j'ai un projet legacy).