您正在寻找 MemoryStream.Write
method。
例如,以下代码会将 byte[]
数组的内容写入内存流:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
或者,您可以基于字节数组 create a new、不可调整大小的 MemoryStream
对象:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Write
比 new MemoryStream(myByteArray)
消耗更多内存
MemoryStream
缓冲区中分配了额外的空间(就像列表一样)。这可以通过使用允许您设置容量的重载轻松处理,但只有在您不希望将任何数据写入流(或者如果您知道您可能需要多少额外字节时)才真正有用)。但我怀疑 jitbit 可能指的是当您使用 byte[]
构造函数时,不会复制数组 - MemoryStream
指的是参数中的数组。这可能是好的也可能是坏的,有点遗憾的是它没有在 MSDN 上记录:)
写入任何流(不仅是 MemoryStream
)的一般方法是使用 BinaryWriter
:
static void Write(Stream s, Byte[] bytes)
{
using (var writer = new BinaryWriter(s))
{
writer.Write(bytes);
}
}
如果您在此处的其他 MemoryStream 示例中遇到错误,则需要将 Position 设置为 0。
public static Stream ToStream(this bytes[] bytes)
{
return new MemoryStream(bytes)
{
Position = 0
};
}
不定期副业成功案例分享
stream.ToArray()
。