4

我正在尝试创建一个程序,该程序能够根据用户输入创建包含文件的压缩包。

在压缩之前,我不需要将这些文件中的任何一个写入硬盘驱动器,因为那是不必要的,那么如何在不实际将它们写入硬盘驱动器的情况下创建这些文件,然后将它们压缩?

我正在使用 DotNetZip。

4

3 回答 3

4

请参阅此处的文档,特别是名为“使用从流中获取的内容创建 zip”的示例:

 using (ZipFile zip = new ZipFile())
  {
    ZipEntry e= zip.AddEntry("Content-From-Stream.bin", "basedirectory", StreamToRead);
    e.Comment = "The content for entry in the zip file was obtained from a stream";
    zip.AddFile("Readme.txt");
    zip.Save(zipFileToCreate);
  }

如果您的文件尚未采用流格式,则需要将它们转换为流格式。您可能需要为此使用MemoryStream

于 2012-12-10T18:09:17.853 回答
0

我使用 SharpZipLib,但如果 DotNetZip 可以针对基本的 System.IO.Stream 执行所有操作,那么是的,只需提供一个 MemoryStream 即可写入。

于 2012-12-10T17:47:14.507 回答
0

不应该避免写入硬盘,因为它是不必要的。那是倒退。如果不需要整个压缩过程在内存中完成,则通过写入硬盘来避免它。

硬盘比内存更适合存储大量数据。如果您的 zip 文件有可能最终达到 1 GB 大小,那么您的应用程序可能会出现问题,或者至少会导致系统速度变慢。如果您直接写入硬盘驱动器,则 zip 的大小可能为数 GB,而不会引起问题。

于 2012-12-10T17:48:36.057 回答