Распаковка архива с заменой файлов

122
16 июля 2019, 14:20

Как распаковать архив с заменой файлов? Сейчас при распаковке архива полностью удаляю файлы и директорию, а уже потом на это место распаковываю файлы, но мне это не подходит. Для распаковки использую ZipFile Class

Answer 1

Нашел решение:

public static class ZipArchiveExtensions
{
    public static void ExtractToDirectory(this ZipArchive archive, string destinationDirectoryName, bool overwrite)
    {
        if (!overwrite)
        {
            archive.ExtractToDirectory(destinationDirectoryName);
            return;
        }
        foreach (ZipArchiveEntry file in archive.Entries)
        {
            string completeFileName = Path.Combine(destinationDirectoryName, file.FullName);
            if (file.Name == "")
            {// Assuming Empty for Directory
                Directory.CreateDirectory(Path.GetDirectoryName(completeFileName));
                continue;
            }
            file.ExtractToFile(completeFileName, true);
        }
    }

}

Пример использования:

ZipArchiveExtensions.ExtractToDirectory(ZipFile.OpenRead("./zip.zip"),"./ex",true);

Или

ZipArchiveExtensions.ExtractToDirectory(ZipFile.Open("./zip.zip", ZipArchiveMode.Read, Encoding.GetEncoding(866)), "./ex", true);

Подробнее о Encoding.GetEncoding можно прочесть тут

READ ALSO
Проверка авторизации asp.net core в тестах

Проверка авторизации asp.net core в тестах

Допустим, я создал пустое приложение aspnet core 2

102
Менеджемент enum, или чистка кода

Менеджемент enum, или чистка кода

Поделитесь опытом, кто что использует для чистки enum? Со временем, обычно накапливается много значений, часть из которых уже отсутствуют в кодеОсобенно...

94
Как правильно применить Sphinx

Как правильно применить Sphinx

У меня есть такой запрос

131
Как сформировать данные WooCommerce?

Как сформировать данные WooCommerce?

Есть вот такие данные:

121