0

是否可以使用 .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[] 列表

4

1 回答 1

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);
                }
            }
于 2013-06-11T07:10:44.373 回答