gpt4 book ai didi

c# - DotNetZip:将文件添加到动态创建的存档目录

转载 作者:太空狗 更新时间:2023-10-30 00:44:07 24 4
gpt4 key购买 nike

我无法想象这很难做到,但我一直无法让它发挥作用。我有一个文件类,它只存储我要压缩的文件的位置、目录和名称。我正在压缩的文件存在于磁盘上,因此 FileLocation 是完整路径。磁盘上不存在 ZipFileDirectory。如果我的文件列表中有两个项目,

{ FileLocation = "path/file1.doc", ZipFileDirectory = @"\", FileName = "CustomName1.doc" },

{ FileLocation = "path/file2.doc", ZipFileDirectory = @"\NewDirectory", FileName = "CustomName2.doc" }

我希望在根目录中看到 MyCustomName1.doc,以及一个包含 MyCustomName2.doc 的名为 NewDirectory 的文件夹,但结果是它们最终都在根目录中使用以下代码:

using (var zip = new Ionic.Zip.ZipFile())
{
foreach (var file in files)
{
zip.AddFile(file.FileLocation, file.ZipFileDirectory).FileName = file.FileName;
}

zip.Save(HttpContext.Current.Response.OutputStream);
}

如果我使用这个:

zip.AddFiles(files.Select(o => o.FileLocation), false, "NewDirectory");

然后它创建了新目录并将所有文件放入其中,正如预期的那样,但是我失去了通过这种方法使用自定义命名的能力,并且它还引入了第一种方法可以完美处理的更多复杂性。

有没有办法让第一个方法 (AddFile()) 按预期工作?

最佳答案

经过进一步检查,自从几分钟前发表评论后,我怀疑设置 FileName 正在删除存档路径。

测试证实了这一点。

将名称设置为@"NewDirectory\CustomName2.doc"将解决问题。

你也可以使用@"\NewDirectory\CustomName2.doc"

关于c# - DotNetZip:将文件添加到动态创建的存档目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com