[英]Zipping a large amount of data into an output stream without loading all the data into memory first in C#
[英]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.