是否有任何 C# 可访问的库可以用来将压缩文件从 zip 存档复制到另一个,而无需经历解压缩和重新压缩文件的往返过程?
上次我尝试 SharpZipLib 时,我找不到一种访问压缩数据的方法,而该方法不能先“帮助”解压缩它。
您可以使用 DotNetZip 库来完成此任务。
假设您有两个 zip 文件:
如果要将a.docx文件从Input.zip复制到Output.zip,可以使用以下代码:
using System.Text;
using Ionic.Zip;
using var input = new ZipInputStream("data\\Input.zip");
using var output = new ZipOutputStream("data\\Output.zip");
while (input.GetNextEntry() is { } entry)
{
if (entry.FileName != "a.docx")
{
continue;
}
var buffer = new byte[4096];
int size;
output.PutNextEntry(entry.FileName);
while ((size = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, size);
}
}
如果遇到与编码相关的错误,您可能需要安装 System.Text.Encoding.CodePages 包。安装包后,通过添加以下代码将其注册到您的应用程序中:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
我希望这个解决方案可以帮助你。