次のコードで非常に厄介な OutOfMemory 例外が発生し続けます。
たくさんの小さなファイル (PDF、それぞれ約 1.5 MB) を圧縮しています。
最初は、25 個のファイルを圧縮した後に例外が発生していましたが、これは大規模なアーカイブのようには見えません。
ZipEntry のサイズを設定すると、最大 110 個のファイルを圧縮できるようになったので、何とか助けられました (Visual Studio でデバッグしています)。
これが私のコードです。おそらく何か問題があります。
どんな助けでも大歓迎です。
ありがとう
public static MemoryStream Zip(Dictionary<string, byte[]> files)
{
var outputMemStream = new MemoryStream();
var zipStream = new ZipOutputStream(outputMemStream);
zipStream.SetLevel(9);
foreach (var file in files)
{
zipStream.PutNextEntry(new ZipEntry(file.Key.FmtValidFileName())
{
Size = file.Value.Length
});
zipStream.Write(file.Value, 0, file.Value.Length);
zipStream.Flush();
}
zipStream.Finish();
outputMemStream.Position = 0;
return outputMemStream;
}