有一个客户要求创建一个 zip,该 zip 包含放置在树状结构文件夹中的多个文件。它最多包含 150 个文件。当这些文件在内存流中超过大约 160MB 时,将引发 OutOfMemoryException。
- 项目清单
- 是否有配置来增加分配给此操作的内存?
- 还有其他替代方法来解决这个问题吗?
示例代码
MemoryStream memStream = new MemoryStream();
using (var zipStream = new ZipOutputStream(memStream))
{
foreach (FileModel fileToBeAddedInZip in listOfFiles)
{
byte[] fileBytes;
fileBytes = //Read the file from DB
ZipEntry fileEntry = null;
fileEntry = new ZipEntry(fileToBeAddedInZip.fileName)
{
Size = fileBytes.Length
};
zipStream.PutNextEntry(fileEntry);
zipStream.Write(fileBytes, 0, fileBytes.Length);
}
}
zipStream.Flush();
zipStream.Close();