从MemoryStream获取底层数据的最佳方法?

时间:2011-08-29 13:06:37

标签: c# .net performance memory-management

将字节写入MemoryStream对象,需要获取底层缓冲区以将其保存到文件

MemoryStream ms = new MemoryStream();
// ms.Write(...)
// ms.Write(...)
// etc... some bytes are written to the stream

byte[] data = ms.GetBuffer();
int length = data.Length;

但是,返回的data的容量为ms,而不是真正的ms长度。

ms容量设置为其长度或分配data并将ms内容复制到其中是否更好(更快,更安全......)

3 个答案:

答案 0 :(得分:2)

只需使用成员方法ms.ToArray()

答案 1 :(得分:2)

GetBuffer()旨在避免可能昂贵的数组分配。你可以使用ToArray()方法,你想要一个大小合适的byte []。

答案 2 :(得分:0)

当您不寻找随机位置时,您也可以使用流位置:

Debug.Log("All length: " + (int)ms.Position);