Я написал код для хранения закодированной строки zip-файла в temp-путь, и теперь я хочу сохранить закодированную строку zipfile в memystream вместо временного пути. Может кто-то, пожалуйста, помогите мне, как читать поток и передать его как строку в класс ZipFile ... Я использую библиотеку DOTNETZIP для распаковки файла с протестом. См. Ниже мой код.Декомпрессия zipfile в поток памяти - C#
string tempPath = Path.GetTempPath();
foreach (ActivityMimeAttachment a in attachments.Entities)
{
if (a.FileName.EndsWith(".zip", StringComparison.OrdinalIgnoreCase))
{
string strcontent = a.Body;
byte[] filecontent = Convert.FromBase64String(strcontent); // unpack the base-64 to a blob
File.WriteAllBytes(tempPath + a.FileName, filecontent); // Working code creates a zip file
string attachmentfile = tempPath + a.FileName;
using (ZipFile zip = new ZipFile(attachmentfile))
{
foreach (ZipEntry entry in zip.Entries)
{
if ((entry.FileName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase)) ||
(entry.FileName.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase)))
{
entry.ExtractWithPassword(tempPath, "password");
FileStream inFile;
byte[] binaryData;
string file = tempPath + entry.FileName;
inFile = new FileStream(file, FileMode.Open, FileAccess.Read);
binaryData = new Byte[inFile.Length];
long bytesRead = inFile.Read(binaryData, 0,
(int)inFile.Length);
inFile.Close();
Можете ли вы не просто преобразовать массив байтов в поток памяти? Поток потока = новый MemoryStream (filecontent); – k3davis
Спасибо, что ответили. Да ты прав. Я могу конвертировать, но моя проблема здесь в том, как прочитать его обратно из потока памяти и передать его как строку в ZIP-файл. – Kittu