FastZip SharpZipLib не распаковывает каталоги на Mac

Я использую следующий код на Mac, используя Mono для распаковки zip-файла. ZIP-файл содержит записи в каталогах (например, foo/bar.txt). Однако в разархивированном каталоге вместо создания каталога foo с файлом bar.txt, FastZip создает файл foo\bar.txt, Как мне обойти это?

FastZip fz = new FastZip();
string filePath = @"path\to\myfile.zip";

fz.ExtractZip(filePath, @"path\to\unzip\to", null);

Это создает файл foo\bar.txt в path\to\unzip\to,

2 ответа

Решение

Видимо не может использовать FastZip в этом случае я написал собственный механизм расстегивания молнии:

string filePath = @"path\to\myfile.zip";
string unzipDir = @"path\to\unzip\to";

using (var zipFile = new ZipFile(filePath))
{
    foreach (var zipEntry in zipFile.OfType<ZipEntry>())
    {
        var unzipPath = Path.Combine(unzipDir, zipEntry.Name);
        var directoryPath = Path.GetDirectoryName(unzipPath);

        // create directory if needed
        if (directoryPath.Length > 0)
        {
            Directory.CreateDirectory(directoryPath);
        }

        // unzip the file
        var zipStream = zipFile.GetInputStream(zipEntry);
        var buffer = new byte[4096];

        using (var unzippedFileStream = File.Create(unzipPath))
        {
            StreamUtils.Copy(zipStream, unzippedFileStream, buffer);
        }
    }
}

Использовать косую черту для разделения папок при создании почтового индекса

Другие вопросы по тегам