2016-01-25 3 views
0

У меня есть функция, для которой требуется Filestream.Получить Filestream от ZipArchive

Я хочу передать несколько файлов этой функции, которые я получаю из загруженных zip-файлов. Возможно ли создать Filestream без извлечения файла во временную папку?

Я Imagin что-то вроде этого:

string path = @"C:\somepathtomyzip"; 
string filepath = "nameofimagefile" 
using (ZipArchive archive = ZipFile.OpenRead(path)) 
{ 
    ZipArchiveEntry entry = archive.GetEntry(file_path); 

    //generate Filestream from entry 

    myFunction(filestreamIneed); 
} 

ответ

2

Вы можете использовать ZipArchiveEntry.Open() и скопировать выход из возвращенного Stream экземпляра к FileStream например:

using (ZipArchive archive = ZipFile.OpenRead(path)) 
{ 
    ZipArchiveEntry entry = archive.GetEntry(file_path); 

    var memoryStream = return entry.Open(); 

    using (var fileStream = new FileStream(fileName, FileMode.CreateNew, FileAccess.ReadWrite)) 
    { 
     memoryStream.CopyTo(fileStream); // fileStream is not populated 
    } 
} 
+0

я получаю объект типа Stream (не MemoryStream), и мне нужен Filestream. –

+0

Я обновил свой ответ – Jaco

Смежные вопросы