使用DotNetZip向现有Zip添加文件时避免生成目录结构的问题
解决DotNetZip批量添加文件到Zip根目录的问题
问题核心在于使用AddFiles方法时,若传入文件的完整路径,DotNetZip默认会保留源文件的完整目录结构。要让文件直接放在Zip根目录,需使用指定根路径的重载方法,告诉Zip库要移除的前缀目录。
修正后的VB.Net代码:
Dim path = "\\server\test\test\" ' 直接筛选目录下的txt文件,简化代码逻辑 Dim txtFiles = IO.Directory.EnumerateFiles(path, "*.txt").ToList() Using zip As Ionic.Zip.ZipFile = ZipFile.Read(Path.Combine(path, "Alphabet.zip")) ' 调用AddFiles重载:第二个参数传入空字符串,将文件直接放在Zip根目录 zip.AddFiles(txtFiles, "") zip.Save() End Using
关键说明:
AddFiles的第二个参数为entryNameBase,传入空字符串时,所有文件会直接置于Zip根目录,不会保留源文件的目录层级。- 原代码中
di.GetFiles(di)是错误写法,改用Directory.EnumerateFiles可以直接筛选.txt文件,省去多余的循环判断。 - 用
Path.Combine拼接Zip文件路径,能避免手动拼接路径时的格式问题,提升代码兼容性。
内容的提问来源于stack exchange,提问作者sophia
相关产品推荐
相关产品推荐

