J'obtiens le résultat StreamReader
objet.
Je veux convertir le résultat en byte[]
.
Comment puis-je convertir StreamReader
en byte[]
?
Merci
J'obtiens le résultat StreamReader
objet.
Je veux convertir le résultat en byte[]
.
Comment puis-je convertir StreamReader
en byte[]
?
Merci
Il suffit de jeter tout ce que vous lisez dans un MemoryStream
et d'obtenir le tableau d'octets à la fin. Comme indiqué, vous devez lire à partir du flux sous-jacent pour obtenir les octets bruts.
var bytes = default(byte[]);
using (var memstream = new MemoryStream())
{
var buffer = new byte[512];
var bytesRead = default(int);
while ((bytesRead = reader.BaseStream.Read(buffer, 0, buffer.Length)) > 0)
memstream.Write(buffer, 0, bytesRead);
bytes = memstream.ToArray();
}
Ou si vous ne souhaitez pas gérer les buffers :
var bytes = default(byte[]);
using (var memstream = new MemoryStream())
{
reader.BaseStream.CopyTo(memstream);
bytes = memstream.ToArray();
}
Un StreamReader est pour le texte, pas pour les octets simples. N'utilisez pas de StreamReader et lisez plutôt directement à partir du flux sous-jacent.
Vous pouvez également utiliser CopyTo :
var ms = new MemoryStream();
yourStreamReader.BaseStream.CopyTo(ms); // blocking call till the end of the stream
ms.GetBuffer().CopyTo(yourArray, ms.Length);
ou
var ms = new MemoryStream();
var ct = yourStreamReader.BaseStream.CopyToAsync(ms);
await ct;
ms.GetBuffer().CopyTo(yourArray, ms.Length);
Vous pouvez utiliser ce code : Vous ne devriez pas utiliser ce code :
byte[] bytes = streamReader.CurrentEncoding.GetBytes(streamReader.ReadToEnd());
Veuillez consulter le commentaire de cette réponse pour savoir pourquoi. Je vais laisser la réponse, afin que les gens connaissent les problèmes avec cette approche, car je ne l'ai pas fait jusqu'à présent.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.