有人可以提示我如何使用更大的数据:
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; }
}
答案 0 :(得分:2)
它将内存分配至少两倍于序列化数据的总大小。
一次是内存流,第二次是新缓冲区,需要为ToArray()
分配
您可以使用ms.GetBuffer()
获取内部缓冲区,但请记住,它很可能比实际数据更大。因此,您需要将其与ms.Length
如果总大小非常大,最好使用文件流并从您的方法返回Stream
而不是byte[]
。