ICSharpCode.SharpZipLib Метод сжатия не поддерживается PKZIP
У меня проблема с zip-файлом, созданным в старой версии PKZIP® Command Line для Windows версии 4 2000 года. Я использую ICSharpCode.SharpZipLib для извлечения файла. Windows не имеет проблем, чтобы открыть файл в проводнике. Вот код:
private void Extract(string zipFile, string outputfolder)
{
try
{
_logger.InfoFormat("Extracting {0}", zipFile);
System.IO.Stream stream = new System.IO.FileStream(zipFile, System.IO.FileMode.Open);
ZipInputStream zipInputStream = new ZipInputStream(stream);
ZipEntry zipEntry = zipInputStream.GetNextEntry(); //Throws Compression error exception
while (zipEntry != null)
{
String entryFileName = zipEntry.Name;
_logger.InfoFormat("Entry-Filename: {0}", entryFileName);
byte[] buffer = new byte[4096];
String fullZipToPath = Path.Combine(outputfolder, entryFileName);
string directoryName = Path.GetDirectoryName(fullZipToPath);
if (directoryName.Length > 0)
{
Directory.CreateDirectory(directoryName);
}
using (FileStream streamWriter = File.Create(fullZipToPath))
{
StreamUtils.Copy(zipInputStream, streamWriter, buffer);
}
zipEntry = zipInputStream.GetNextEntry();
}
}
catch (Exception ex)
{
_logger.Error("Error during extraction",ex);
throw;
}
}
Есть идеи, как решить эту проблему?
2 ответа
У меня была такая же проблема при распаковке zip-файла, созданного с помощью 7-zip.
Я изменил его с Deflate64 на Deflate, и тогда все заработало.