我需要对从Azure Blob Storage下载的大文件进行反序列化。
以这种方式使用
MemoryStream
,是否是将文件反序列化为
object
的最理想方式?
我主要担心的是RAM的使用。
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream stream = new MemoryStream())
blob.DownloadToStream(stream);
stream.Position = 0;
return formatter.Deserialize(stream);
另一个选择是将整个文件作为一个字节数组下载。请注意,这个文件的大小可能达到50MB。
从Guillaume的回答中进一步了解。
那么,在序列化和上传时,这样做是否更理想?
BinaryFormatter formatter = new BinaryFormatter();
using (var stream = blob.OpenWrite())
formatter.Serialize(stream, value);
blob.UploadFromStream(stream);