我正在开发一个压缩某些文件的服务,而且我一直在对服务进行测试,并且它在更大的文件中遇到了重大故障。我使用带有6GB的outlook文件进行测试,压缩500Mb后出现内存不足错误。
这是我的代码:
using (FileStream zipToOpen = new FileStream(@dir + ZipName, FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
foreach (string file in files)
{
if (File.GetCreationTime(@dir + file).AddSeconds(FileAge) < DateTime.Now)
{
ZipArchiveEntry fileEntry = archive.CreateEntry(file);
using (BinaryWriter writer = new BinaryWriter(fileEntry.Open()))
{
using (FileStream sr = new FileStream(@dir + file, FileMode.Open, FileAccess.Read))
{
byte[] block = new byte[1024];
int bytesRead = 0;
while ((bytesRead = sr.Read(block,0, block.Length)) >0)
{
writer.Write(block, 0, bytesRead);
}
}
}
File.Delete(@dir + file);
}
}
}
}
任何想法我怎么能解决它? 提前谢谢