Мы используем DotNetZip , и я могу разархивировать содержимое zip-файла из Stream
в память. Вот пример кода для извлечения специально названного файла из потока (LocalCatalogZip
) и возврата потока для чтения этого файла, но его было бы легко развернуть.
private static MemoryStream UnZipCatalog()
{
MemoryStream data = new MemoryStream();
using (ZipFile zip = ZipFile.Read(LocalCatalogZip))
{
zip["ListingExport.txt"].Extract(data);
}
data.Seek(0, SeekOrigin.Begin);
return data;
}
Это не библиотеку, которую вы используете сейчас, но если вы можете ее изменить, вы можете получить эту функциональность.
Вот вариант, который возвращает Dictionary
для содержимого каждого файла zip файл.
private static Dictionary UnZipToMemory()
{
var result = new Dictionary();
using (ZipFile zip = ZipFile.Read(LocalCatalogZip))
{
foreach (ZipEntry e in zip)
{
MemoryStream data = new MemoryStream();
e.Extract(data);
result.Add(e.FileName, data);
}
}
return result;
}