Как распаковать многослойные zip-файлы в C# - PullRequest
0 голосов
/ 08 апреля 2020

Я знаю, как разархивировать заархивированный файл, и здесь есть способы решения проблемы переполнения стека. Но я не нашел решения, где есть несколько слоев zip-файлов в zip-файлах.

Допустим, у меня есть каталог c: \ myfolder \ grandfather.zip \ Father.zip \ child.zip \ familyimage.jpg.

Я хочу сосчитать все файлы под этими файлами zip. и извлеките их в другое место.

Как мне это сделать в C#. Net

1 Ответ

0 голосов
/ 09 апреля 2020

Вы можете разархивировать его один раз, l oop по всем файлам, и если какое-либо извлеченное расширение файла * .zip, вы можете разархивировать его снова. Поскольку кажется, что вы знаете, как разархивировать один раз, опубликуйте, что это просто логическое кодирование, чтобы иметь разархивированный вложенный файл. Вы можете использовать этот метод:

public static void ExtractFile(string baseZipPath, string extractPath)
{
        if (!Directory.Exists(extractPath))
            Directory.CreateDirectory(extractPath);

        ZipFile.ExtractToDirectory(baseZipPath, extractPath);
        string[] nestedZipDirectories = System.IO.Directory.GetFiles(extractPath, "*.zip");
        foreach (var nestedZipDirectory in nestedZipDirectories)
        {
            ZipFile.ExtractToDirectory(nestedZipDirectory, extractPath);
        }
}

Тогда:

static void Main(string[] args)
{
    ExtractFile(@"c:\myfolder\grandfather.zip", @"c:\myfolder2");
}
...