大数据的内存流

时间:2016-05-16 17:39:03

标签: c# binary memorystream

有人可以提示我如何使用更大的数据:

using (MemoryStream ms = new MemoryStream())
{
    ser.Serialize(ms, files);
    filesBytes = ms.ToArray();
}

files是一个自定义类型的数组,其中包含有关文件的信息

ser是二进制格式化程序

这些对象应序列化

public class FileEntry
{
    public string FileName { get; set; }
    public string RelativePath { get; set; }
    public byte[] Content { get; set; }
}

1 个答案:

答案 0 :(得分:2)

它将内存分配至少两倍于序列化数据的总大小。

一次是内存流,第二次是新缓冲区,需要为ToArray()分配

您可以使用ms.GetBuffer()获取内部缓冲区,但请记住,它很可能比实际数据更大。因此,您需要将其与ms.Length

结合使用

如果总大小非常大,最好使用文件流并从您的方法返回Stream而不是byte[]