在压缩大文件时如何解决或绕过系统内存异常?

时间:2016-07-28 11:02:39

标签: c# compression out-of-memory ziparchive

所以我有一个拉链目录的应用程序,它完美地工作,除了今天我有一个例外,当我检查日志时,它发现它有一个系统内存不足,因为这个目录是~550mb。所以我的问题是:有没有办法解决这个问题或使我的应用程序能够使用更大的目录?

以下是压缩目录的代码:

using (FileStream zipToOpen = new FileStream(destdir1, FileMode.Open))
{
   using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
    {
      int ind = folder.LastIndexOf("\\") + 1;
      string folderName = folder.Substring(ind, folder.Length - ind);

      ZipArchiveEntry readmeEntry;
      DirectoryInfo d = new DirectoryInfo(folder);
      FileInfo[] Files = d.GetFiles("*");
      foreach (FileInfo file in Files)
      {
        readmeEntry = archive.CreateEntryFromFile(folder + "\\" + file.Name, folderName + "/" + file.Name);
      }
      DeleteDirectory(folder);
      }
}

1 个答案:

答案 0 :(得分:1)

这听起来像是ZipArchive库的限制,它可能会在压缩时将所有临时数据存储在内存中。

可能无法解决内存使用过多的问题,但要解决此问题,您可以在64位模式下重建应用程序。这可能会消除您遇到的内存上限。