DotNetZip不提取最佳压缩从WinZip
本文关键字:WinZip 压缩 最佳 提取 DotNetZip | 更新日期: 2023-09-27 17:54:50
我使用DotNetZip dll创建了一个非常简单的c#程序。我试图提取一个zip文件,选择最好的压缩。代码如下:
static void Main(string[] args)
{
string nameOfFile = "testBest.zip";
string directory = "testBest";
Console.WriteLine("Extracting file {0} to {1}", nameOfFile, directory);
using (ZipFile zip = ZipFile.Read(nameOfFile))
{
foreach (ZipEntry e in zip)
{
e.Extract(directory, ExtractExistingFileAction.OverwriteSilently);
}
}
}
错误提示其中一个txt文件使用了不支持的压缩方法
可以DotNetZip库不提取zip文件时使用最佳压缩?有办法解决这个问题吗?还有其他选择吗?
我认为正在使用的zip压缩不是受支持的压缩之一。这里是一个例子论坛帖子,这是情况:http://dotnetzip.codeplex.com/discussions/64680
在这种情况下,使用了DEFLATE64而不是DEFLATE压缩,从而产生与您所看到的相同的错误。虽然整个错误文本会更有帮助,但它可能归结为同样的事情—库不支持您的压缩方法。
嘿,这里我创建了提取方法。您需要提供目录的完整路径如c: ' temp ' temp.zip
public void MyExtractZip(string FileName,string Password)
{
string ExtractLocation = string.Empty;
using (ZipFile zip = ZipFile.Read(FileName))
{
// here, we extract every entry, but we could extract conditionally
// based on entry name, size, date, checkbox status, etc.
string ArchiveName =Path.GetFileNameWithoutExtension(FileName);
Console.WriteLine("[1] Extract Here [2] Extract too [3] Extract to "+ArchiveName);
Console.WriteLine("'n");
Console.Write("Select your option :: 't");
string entry = Console.ReadLine();
int n = int.Parse(entry);
string Location =string.Empty;
if (n == 2)
{
Console.Write("Enter the Location ::" );
Location = Console.ReadLine();
}
Console.Write("'n");
switch (n)
{
case 1:
ExtractLocation=Path.GetDirectoryName(FileName);
break;
case 2:
ExtractLocation = Location + "''";
break;
case 3:
ExtractLocation = Path.GetDirectoryName(FileName) + "''"+Path.GetFileNameWithoutExtension(FileName);
break;
}
zip.Password = Password;
foreach (ZipEntry e in zip)
{
e.Extract(ExtractLocation, ExtractExistingFileAction.OverwriteSilently);
}
}
}