用目录创建zip

时间:2013-06-11 06:43:31

标签: zip .net-4.5 directory

是否可以使用.net 4.5 System.IO.Compression类创建一个带有目录的zip。

我似乎找不到任何暗示你可以的东西。

我有一些动态生成的文件作为字节数组我要添加到zip中的子文件夹。

到目前为止我的代码是

var stream = new MemoryStream();
            using (var zip =new ZipArchive(stream, ZipArchiveMode.Create,true))
            {
                var zipEntry = zip.CreateEntry(string.Format("{0} Manual.pdf", plant.Name));

                using (var writer = new BinaryWriter(zipEntry.Open()))
                {
                    writer.Write(manualPdf);
                }

                var attachments = GetAttachments(manual.Headings);


                foreach (var attachment in attachments.Where(attachment => attachment != null && attachment.Data != null))
                {
                    var attachmentEntry = zip.CreateEntry(attachment.FileName);
                    using (var writer = new BinaryWriter(attachmentEntry.Open()))
                    {
                        writer.Write(attachment.Data);
                    }
                }

            }

在这种情况下,我希望附件的循环位于zip的子目录中。附件列表是byte []

的列表

1 个答案:

答案 0 :(得分:1)

将文件夹名称放在文件名中。这是一个名为Test的文件夹的例子。

foreach (var attachment in attachments.Where(attachment => attachment != null && attachment.Data != null))
            {
                var attachmentEntry = zip.CreateEntry(@"Test/" + attachment.FileName);
                using (var writer = new BinaryWriter(attachmentEntry.Open()))
                {
                    writer.Write(attachment.Data);
                }
            }