![](/img/trans.png)
[英]C# Asp.Net Create text file, zip it, and save to Blob - Without writing anything to disk
[英]Create a ZIP file without entries touching the disk?
我正在尝试创建一个程序,它能够根据用户输入创建包含文件的压缩包。
在压缩之前我不需要将任何这些文件写入硬盘驱动器,因为这是不必要的,所以如何创建这些文件而不实际将它们写入硬盘驱动器,然后将它们压缩?
我正在使用DotNetZip。
请参阅此处的文档,特别是“使用从流中获取的内容创建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 。
我使用SharpZipLib,但是如果DotNetZip可以针对基本的System.IO.Stream做任何事情,那么是的,只需要为它写一个MemoryStream来写。
写入硬盘不应该是避免的,因为它是不必要的。 那是倒退。 如果不要求整个压缩过程在内存中完成,那么通过写入硬盘来避免它。
硬盘比内存更适合存储大量数据。 如果您的zip文件有可能最终大约为1 GB,那么您的应用程序可能会出现问题,或者至少会导致系统速度变慢。 如果你直接写入硬盘驱动器,zip的大小可能是几千兆字节而不会引起问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.