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);
}
}
}
Использовать косую черту для разделения папок при создании почтового индекса