ZipFile.CreateFromDirectory不包含目录条目

时间:2016-05-18 07:22:42

标签: c# zip uwp unzip

我有一个基本的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包含目录条目而无需自己遍历目录?

2 个答案:

答案 0 :(得分:3)

为了将来参考,问题还有别处:

ZipFile.CreateFromDirectory()在路径名中使用反斜杠。使用Windows文件浏览器制作的档案使用正斜杠(这也是我所需要的)。

我没有看到更改ZipFile的默认行为的方法,而是使用ZipArchive自行构建zip文件。通过这样做,我甚至不需要包含目录条目。

顺便说一句,通过在路径的末尾添加正斜杠来添加这些(例如foo/bar/)。

答案 1 :(得分:0)

美好的一天,这对你有用吗?

ZipFile.CreateFromDirectory("/inputpath", "/Output.zip", CompressionLevel.Optimal, true);