Как мне преобразовать структуру System.Byte
byte[]
в System.IO.Stream
объект в C # ?
759
Самый простой способ преобразовать байтовый массив в поток - использовать MemoryStream
класс:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()
если хотите вернуть свой байтовый массив.Вы ищете
MemoryStream.Write
метод .Например, следующий код запишет содержимое
byte[]
массива в поток памяти:В качестве альтернативы вы можете создать новый
MemoryStream
объект без изменения размера на основе байтового массива:источник
MemoryStream.Write
потребляет гораздо больше памяти, чемnew MemoryStream(myByteArray)
MemoryStream
умолчанию в буфере выделено дополнительное пространство (как, например, со списком). Эту проблему можно легко решить, используя перегрузку, которая позволяет вам устанавливать емкость, но она действительно полезна, если вы не планируете записывать какие-либо данные в поток (или если вы знаете, сколько дополнительных байтов вам понадобится ). Но я подозреваю, что jitbit может ссылаться на тот факт, что когда вы используетеbyte[]
конструктор, массив не копируется -MemoryStream
ссылка на массив в аргументе. Это может быть как хорошо, так и плохо, и это немного обидно, это не задокументировано в MSDN :)Общий подход для записи в любой поток (не только
MemoryStream
) заключается в использованииBinaryWriter
:источник
Посмотри в
MemoryStream
класс.источник