Как создать Zip-файл и добавить файлы в определенную папку все в памяти, используя C #? - PullRequest
0 голосов
/ 28 мая 2019

Я попробовал следующий (просто быстрый PoC) подход, но получаю исключение:

System.IO.IOException: Message = Записи в режиме создания могут быть записаны только один раз,и только одна запись может оставаться открытой одновременно.

    using (MemoryStream zipMS = new MemoryStream())
    {
        using (ZipArchive zipArchive = new ZipArchive(zipMS, ZipArchiveMode.Create, true))
        {
    //read the file bytes
    //byte[] fileToZipBytes = System.IO.File.ReadAllBytes(fileToZip);

    //create the entry - this is the zipped filename
    // just end with "/"
    ZipArchiveEntry zipFileEntry1 = zipArchive.CreateEntry("folder1/folderchild1/test/test.png");
    ZipArchiveEntry zipFileEntry2 = zipArchive.CreateEntry("folder1/folderchild1/test2/test2.png");

    //add the file 1 contents
    using (Stream zipEntryStream = zipFileEntry1.Open())
    using (BinaryWriter zipFileBinary = new BinaryWriter(zipEntryStream))
    {
        zipFileBinary.Write(ssnewImage1);
    }

    //add the file 2 contents
    using (Stream zipEntryStream2 = zipFileEntry2.Open())
    using (BinaryWriter zipFileBinary2 = new BinaryWriter(zipEntryStream2))
    {
        zipFileBinary2.Write(ssnewImage2);
    }

}

        using (FileStream finalZipFileStream = new FileStream(@"C:\Users\peters\Desktop\res.zip", FileMode.Create))
        {
            zipMS.Seek(0, SeekOrigin.Begin);
            zipMS.CopyTo(finalZipFileStream);
        }

    }

Надеюсь, что кто-то может помочь мне с этой задачей.
Приветствия

...