Je voudrais savoir comment convertir un flux en octet.
Je trouve ce code, mais dans mon cas, il ne fonctionne pas:
var memoryStream = new MemoryStream();
paramFile.CopyTo(memoryStream);
byte[] myBynary = memoryStream.ToArray();
myBinary = memoryStream.ToArray();
Mais dans mon cas, dans la ligne paramFile.CopyTo (memoryStream) il ne se passe rien, aucune exception, l'application fonctionne toujours, mais le code ne continue pas avec la ligne suivante.
Merci.
Si vous lisez un fichier, utilisez simplement la méthode File.ReadAllBytes :
byte[] myBinary = File.ReadAllBytes(@"C:\MyDir\MyFile.bin");
De plus, il n'est pas nécessaire de copier vers un MemoryStream juste pour obtenir un tableau d'octets tant que votre sourceStream prend en charge la propriété Length:
byte[] myBinary = new byte[paramFile.Length];
paramFile.Read(myBinary, 0, (int)paramFile.Length);
Ceci est une méthode d'extension que j'ai écrite pour la classe Stream
public static class StreamExtensions
{
public static byte[] ToByteArray(this Stream stream)
{
stream.Position = 0;
byte[] buffer = new byte[stream.Length];
for (int totalBytesCopied = 0; totalBytesCopied < stream.Length; )
totalBytesCopied += stream.Read(buffer, totalBytesCopied, Convert.ToInt32(stream.Length) - totalBytesCopied);
return buffer;
}
}