繁体   English   中英

大数据的内存流

[英]Memory stream for large data

有人可以给我提示这如何处理更大的数据:

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; }
}

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM