Plusieurs méthodes existent pour convertir un flux en un tableau d'octets dans .NET. Cet article explore les approches les plus efficaces, traitant les limites des techniques plus simples.
BinaryReader
Bien que l'utilisation de BinaryReader
pour convertir un flux en un tableau d'octets soit possible (en particulier dans .NET 3.5), il nécessite de connaître la longueur du flux au préalable. Ce n'est pas toujours pratique.
Pour les flux avec des longueurs inconnues, une solution plus robuste est nécessaire. Une approche commune consiste à lire le flux en morceaux, à ajouter chaque morceau à un MemoryStream
.
ReadFully
Fonction Une fonction personnalisée ReadFully
fournit un moyen propre de réaliser cette lecture en morceaux. Cette méthode lit et ajoute les données de manière itérative jusqu'à la fin du flux, reflétant efficacement la fonctionnalité de BinaryReader
sans l'exigence de longueur.
Stream.CopyTo
(.net 4) .NET 4 et les versions ultérieures offrent la méthode pratique Stream.CopyTo
. Cela simplifie le processus en copiant directement le contenu du flux en A MemoryStream
, qui peut ensuite être facilement converti en un tableau d'octets.
à la fois l'approche en morceaux et Stream.CopyTo
impliquent une allocation et une copie de la mémoire. Bien qu'acceptable pour les petits flux, les performances peuvent souffrir de grands ruisseaux. Les stratégies d'optimisation incluent la pré-allocation de la MemoryStream
à la taille attendue ou l'utilisation des opérations de copie de tampon plus directes pour une amélioration de l'efficacité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!