Архивирование файлов с сохранением структуры каталогов - PullRequest
2 голосов
/ 09 февраля 2011

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

Проблема, с которой я сталкиваюсь, заключается в том, что после архивирования файлов сохраняется структура каталогов, а при извлечении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, установив значение параметра falseDirectoryHierarchy равным false, но безрезультатно.

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

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

1 Ответ

1 голос
/ 09 февраля 2011

Я неправильно вызывал метод перегрузки 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...