我有一个基本的Windows 10 UWP应用程序并使用以下代码从目录结构创建.zip文件:
ZipFile.CreateFromDirectory("/inputpath", "/output.zip");
我注意到生成的.zip文件没有嵌套目录的任何条目,因此在Mac上解压缩不起作用。
以下是我想要包含在zip文件中的目录结构:
./ziproot
./Data
Version.txt
我使用API ZipFile.CreateFromDirectory(...)
得到了什么:
$ zipinfo output.zip
Archive: output.zip 279202 bytes 4 files
-rw---- 2.0 fat 1 b- defN 13-May-16 11:33 Data\Version.txt
当我使用Windows资源管理器压缩测试文件夹时,我得到了正确的zip结构:
$ zipinfo zipwindows.zip
Archive: zipwindows.zip 279188 bytes 8 files
drwx--- 2.0 fat 0 b- stor 18-May-16 09:05 Data/
-rw---- 2.0 fat 1 t- stor 13-May-16 11:33 Data/Version.txt
请注意上面输出中Data
目录的第一个条目。
有没有办法让ZipFile
API包含目录条目而无需自己遍历目录?
答案 0 :(得分:3)
为了将来参考,问题还有别处:
ZipFile.CreateFromDirectory()
在路径名中使用反斜杠。使用Windows文件浏览器制作的档案使用正斜杠(这也是我所需要的)。
我没有看到更改ZipFile
的默认行为的方法,而是使用ZipArchive
自行构建zip文件。通过这样做,我甚至不需要包含目录条目。
顺便说一句,通过在路径的末尾添加正斜杠来添加这些(例如foo/bar/
)。
答案 1 :(得分:0)
美好的一天,这对你有用吗?
ZipFile.CreateFromDirectory("/inputpath", "/Output.zip", CompressionLevel.Optimal, true);