Я не уверен, что я делаю неправильно.Файлы, которые я создаю после получения byte[]
(то есть emailAttachment.Body) и передачи его в метод ExtractZipFile, преобразования его в MemoryStream
, а затем его разархивирования, возврата в виде KeyValuePair
и последующей записи в файл.используя FileStream
.
Однако когда я открываю новые созданные файлы, возникает ошибка при их открытии.Они не могут быть открыты.
Ниже приведены в том же классе
using Ionic.Zip;
var extractedFiles = ExtractZipFile(emailAttachment.Body);
foreach (KeyValuePair<string, MemoryStream> extractedFile in extractedFiles)
{
string FileName = extractedFile.Key;
using (FileStream file = new FileStream(CurrentFileSystem +
FileName.FileFullPath(),FileMode.Create, System.IO.FileAccess.Write))
{
byte[] bytes = new byte[extractedFile.Value.Length];
extractedFile.Value.Read(bytes, 0, (int) xtractedFile.Value.Length);
file.Write(bytes,0,bytes.Length);
extractedFile.Value.Close();
}
}
private Dictionary<string, MemoryStream> ExtractZipFile(byte[] messagePart)
{
Dictionary<string, MemoryStream> result = new Dictionary<string,MemoryStream>();
MemoryStream data = new MemoryStream(messagePart);
using (ZipFile zip = ZipFile.Read(data))
{
foreach (ZipEntry ent in zip)
{
MemoryStream memoryStream = new MemoryStream();
ent.Extract(memoryStream);
result.Add(ent.FileName,memoryStream);
}
}
return result;
}
Есть что-то, что мне не хватает?Я не хочу сохранять оригинальный zip-файл, только извлеченные файлы из MemoryStream
.Что я делаю не так?