2011-02-09 3 views
2

Я использую DotNetZip DLL (http://dotnetzip.codeplex.com/) из кода, чтобы заархивировать некоторые файлы в моей программе.Файлы Zipping, сохраняющие структуру каталогов

Проблема, с которой я столкнулся, - после того, как застегнул файлы, он сохраняет структуру каталогов, и когда я извлекаю zip-файл, все родительские папки снова создаются, а затем только я могу просмотреть файл. Это очень раздражает, когда исходный файл существует в

Итак, если я застегнул файл из g: \ Archive \ LogFiles \ W3SVC1 \ abc.log и создав файл «abc.zip» после его извлечения, папки Archive \ LogFiles \ W3SVC1 \ создаются, а затем только я могу видеть файл abc.log. Здесь 'g:' - это имя моего общего диска.

Я хочу избавиться от всех этих родительских папок, чтобы я мог сразу извлечь и дотянуться до заархивированного файла и открыть его. Я проверил свойство Path файла Zipped и отобразил Archive \ LogFiles \ W3SVC1. Как-то мне нужно удалить это программно, но не легко найти какой-либо вариант.

код я использую, как это:

using (ZipFile zip = new ZipFile()) 
{ 
    if (fileExtension != null) 
    { 
     zip.AddFiles(from f in sourceDir.GetFiles() where f.FullName.EndsWith(fileExtension) select f.FullName); 
    } 
    else 
    { 
     zip.AddFiles(from f in sourceDir.GetFiles() select f.FullName); 
    } 
    zip.Save(DestinationDir + OutFileName); 
} 

Я также попробовал метод перегрузки Addfiles, установив reserveDirectoryHierarchy к «ложным», но не приносит никакой пользы.

Пожалуйста, дайте мне знать, что делать.

Большое спасибо заранее.

ответ

1

Я не вызывал метод перегрузки Addfiles правильно. вместо Null я прошел пустую строку, и теперь она не сохраняет структуру каталогов. , поэтому обновленный код выглядит следующим образом:

if (fileExtension != null) 
       { 
        zip.AddFiles(from f in sourceDir.GetFiles() where f.FullName.EndsWith(fileExtension) select f.FullName,false,""); 

       } 
       else 
       { 
        zip.AddFiles(from f in sourceDir.GetFiles() select f.FullName,false,""); 
       } 
       zip.Save(DestinationDir + OutFileName); 
Смежные вопросы