2014-10-30 2 views
2

Я использую класс ZipFile.Получение ошибки в System.IO.Compression при попытке использования класса ZipFile

Для использования этого класса необходимо добавить ссылку/dll. Кажется, что вы можете использовать как System.IO.Compression, так и dll Ionic.Zip (по одному в то время).

В моем случае работает только последний. Проблема состоит в том, что Ionic.Zip, похоже, не имеет метода: ExtracToFile(...), который перезаписывает существующий файл. Мне нужен этот метод плохо. Вместо этого, я могу только сделать:

zip.Extract(extractDirectory); (Тогда я получаю сообщение об ошибке сказав файл уже существует)

Если я:

zip.ExtractToFile(extractDirectory); 

Я получаю ошибку о том, что метод ExtractToFile делает не существует.

Другая вещь, чтобы отметить, что делает Using System.IO.Compression, я получаю сообщение об ошибке, когда я делаю:

var zip = ZipFile.Read(finalFileToUnzip) 

, который говорит, что он не может найти ZipFile (хотя я добавить библиотеку DLL в качестве ссылки, делая «Add Reference -> и выбрать файл .dll»)

Если я Using Ionic.Zip, он будет принимать: var zip = ZipFile.Read(finalFileToUnzip)

Я не смог найти любую информацию или предыдущие сообщения об этой проблеме, я надеюсь, что кто-то может помощь

Любое представление о том, что может быть проблемой?

Вот еще код:

for (int i = 0; i < listWithZipToUnpack.Count; ++i) 
{ 
    extractDirectory = Path.Combine(projectPath.ToString(), pathDir + listWithZipToUnpack[i]); 

    var finalFileToUnzip = Path.Combine(projectPath.ToString(), pathDir, "Lely", listWithZipToUnpack[i]); 

    if (finalFileToUnzip.Equals("--Vælg fil--")) { continue; } 

    using (var zip = ZipFile.OpenRead(finalFileToUnzip)) 
    { 
     if (!Directory.Exists(extractDirectory)) 
     { 
      Directory.CreateDirectory(extractDirectory+"-"+listWithZipToUnpack[i]); 
     } 

     foreach (var zipArchiveEntry in zip.Entries) 
     { 
      zipArchiveEntry.ExtractToFile(extractDirectory); 
     } 
    } 
} 

Я использую рамки .NET 4.5.2

+2

'ZipFile' был добавлен в .NET 4.5 ... в какой версии фреймворка вы используете? –

+0

звучит так, будто у вас есть проблема «Путь» здесь вы можете показать, как вы назначаете путь к файлу/файлу содержимого, которое вам нужно зашифровать. – MethodMan

+0

Я использую версию 4.5.2 .NET. Я отредактировал код как добавленный код 2 it – user1960836

ответ

2

я решил. Проблема в том, что недостаточно добавлять только System.IO.Compression к ссылкам, вы также должны добавить System.IO.Compression.Filesystem

Смежные вопросы