С# convert system.IO.Stream to Byte []
Я хотел бы знать, как преобразовать поток в байт.
Я нахожу этот код, но в моем случае он не работает:
var memoryStream = new MemoryStream();
paramFile.CopyTo(memoryStream);
byte[] myBynary = memoryStream.ToArray();
myBinary = memoryStream.ToArray();
Но в моем случае в строке paramFile.CopyTo(memoryStream) ничего не происходит, никакого исключения, приложение все еще работает, но код не продолжается со следующей строкой.
Спасибо.
Ответы
Ответ 1
Если вы читаете файл, просто используйте File.ReadAllBytes Method:
byte[] myBinary = File.ReadAllBytes(@"C:\MyDir\MyFile.bin");
Кроме того, нет необходимости копировать в MemoryStream только для получения байтового массива, если ваш источникStream поддерживает свойство Length:
byte[] myBinary = new byte[paramFile.Length];
paramFile.Read(myBinary, 0, (int)paramFile.Length);
Ответ 2
Это метод расширения, который я написал для класса 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;
}
}