Подтвердить что ты не робот

С# convert system.IO.Stream to Byte []

Я хотел бы знать, как преобразовать поток в байт.

Я нахожу этот код, но в моем случае он не работает:

var memoryStream = new MemoryStream();
paramFile.CopyTo(memoryStream);
byte[] myBynary = memoryStream.ToArray();
myBinary = memoryStream.ToArray();

Но в моем случае в строке paramFile.CopyTo(memoryStream) ничего не происходит, никакого исключения, приложение все еще работает, но код не продолжается со следующей строкой.

Спасибо.

4b9b3361

Ответ 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;
        }
    }