MemoryStream vs一个字节数组

时间:2009-06-12 17:21:24

标签: .net arrays byte memorystream

使用MemoryStream时,我发现自己经常将数据复制(因此复制)到一个临时的字节数组。

我认为这有点浪费资源,因为MemoryStream不允许你直接访问底层字节数组。

在这种情况下,MemoryStream的真正优势是什么?我在某处读过它就像一个内存映射文件。数据仅在访问时从磁盘传输,消耗更少的内存。

这是真的吗?我不这么认为。也许这是FileStream的情况?

感谢您的澄清。

2 个答案:

答案 0 :(得分:4)

对我来说,内存流的主要优点是它可以动态增长,并且已经过优化。 是一种痛苦,必须将其复制出来并复制内存,但如果您主要使用它是在流程结束时构建一个缓冲区,则该漏洞会在某种程度上摊销。

我应该添加,而不是FileStream,MemoryStreams要快得多。它们的大小比FileStreams更受限制,因为您通常拥有比RAM大得多的磁盘空间。所以你必须决定是否需要速度或空间。

答案 1 :(得分:3)

您可以使用getBuffer函数获取基础字节缓冲区(但仅当您从您提供的字节数组创建MemoryStream时,如果您希望能够直接操作缓冲区,这将非常有用)< / p>

使用MemoryStream的唯一好处是,如果您使用的是基于流的API,如果您需要字节缓冲区能够动态增长...