是否可以使用.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 []
的列表答案 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);
}
}