我想压缩目录中的一些文件。我搜索了很多,但我总是看到有关通过以下代码压缩目录(目录中的所有文件)的示例:
string startPath = @subPath;
string zipPath = @"C:\result.zip";
ZipFile.CreateFromDirectory(startPath, zipPath);
我引用了System.IO.Compression.Filesystem.dll
此代码会压缩startPath引用的目录中的所有文件。
我尝试使用ZipArchive类进行压缩,但是压缩文件的路径上有目录。例如, 假设我想压缩" a.txt"位于" C:\ directories \ Graphics \ a.txt"。 zip文件包含目录"目录"和"图形"并在这些目录中输入文件" a.txt"。由于我正在处理大尺寸数据,因此剪切文件然后删除目录并再次粘贴不是一个好的解决方案。
如何只压缩目录中的部分文件?
如何压缩位于不同目录中的某些文件?
我正在查看主题2天。它是.Net中的一种约束吗?
答案 0 :(得分:3)
您可以使用ZipArchive类,首先创建它然后 - 一旦创建,您只需将ZipArchiveEntry对象添加到存档中。每个ZipArchiveEntry对象代表一个您将添加到存档的文件。
一些提示: 您可以在以下网址找到更多信息以及如何在MSDN上完成此操作的示例:http://msdn.microsoft.com/pl-pl/library/system.io.compression.ziparchive(v=vs.110).aspx和此处:http://msdn.microsoft.com/pl-pl/library/system.io.compression.ziparchiveentry(v=vs.110).aspx。
答案 1 :(得分:2)
这可能不是一个确切的解决方案,但应该适合您的方案。我会给你一些步骤:
创建临时目录
读取并将Selected文件复制到Temporary目录中。这也适用于您的第二种情况。
压缩临时目录
- 醇>
完成后删除临时目录
答案 2 :(得分:1)
我建议使用File.Copy
将所有需要的文件复制到临时目录,然后从那里压缩所有文件,并在zip操作完成后删除临时目录。