Я пытаюсь создать новый ZIP-пакет из кода с одной записью и сохранить ZIP файл в файл. Я пытаюсь добиться этого с помощью класса System.IO.Compression.ZipArchive. Я создаю пакет ZIP со следующим кодом:
using (MemoryStream zipStream = new MemoryStream())
{
using (ZipArchive zip = new ZipArchive(zipStream, ZipArchiveMode.Create))
{
var entry = zip.CreateEntry("test.txt");
using (StreamWriter sw = new StreamWriter(entry.Open()))
{
sw.WriteLine(
"Etiam eros nunc, hendrerit nec malesuada vitae, pretium at ligula.");
}
Затем я сохраняю ZIP в файл либо в WinRT:
var file = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync("test.zip", CreationCollisionOption.ReplaceExisting);
zipStream.Position = 0;
using (Stream s = await file.OpenStreamForWriteAsync())
{
zipStream.CopyTo(s);
}
Или в обычном .NET 4.5:
using (FileStream fs = new FileStream(@"C:\Temp\test.zip", FileMode.Create))
{
zipStream.Position = 0;
zipStream.CopyTo(fs);
}
Однако я не могу открыть созданные файлы ни в проводнике Windows, ни в WinRAR и т.д. (я проверил, что размер созданного файла соответствует длине zipStream, поэтому сам поток был сохранен в файле правильно. )
Я что-то делаю неправильно или есть проблема с классом ZipArchive?