使用ZipStorer添加目录时如何仅保留目标根目录而非完整路径
问题原因
- 初始代码:
AddDirectory方法的第三个参数为压缩包内的目录前缀,你传入了完整的压缩包文件路径zipfile,ZipStorer会将该路径的层级全部保留到压缩包内,因此解压后出现Boba/bin/Release/ZipTest的完整目录结构。 - 调整后的代码:第二个参数需要传入待压缩目录的本地完整绝对路径,你仅传入了目录名
ZipTest,程序无法正确定位源目录,路径解析异常导致生成重复拼接的ZipTestZipTest目录,同时错误将压缩包自身作为源文件打包,产生了多余的空zip文件。
正确实现
static string mydir = @"C:\Boba\bin\Release\ZipTest"; static string zipfile = string.Concat(mydir, ".zip"); using (ZipStorer zip = ZipStorer.Create(zipfile)) { // 第二个参数传本地待压缩目录的完整路径,第三个参数仅填压缩包内要显示的根目录名 zip.AddDirectory(ZipStorer.Compression.Deflate, mydir, Path.GetFileName(mydir)); }
修改后压缩包内仅保留ZipTest作为根目录,内部直接存放原目录下的所有文件,不会产生多余路径和空文件。
内容的提问来源于stack exchange,提问作者Andrey Vasiliykov
相关产品推荐
相关产品推荐

