Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.NET 4.5中使用ZipArchive提取时缺少根目录项_C#_.net - Fatal编程技术网

C# 在.NET 4.5中使用ZipArchive提取时缺少根目录项

C# 在.NET 4.5中使用ZipArchive提取时缺少根目录项,c#,.net,C#,.net,这是我用来从zip文件中读取和获取条目的代码: using (var zip = ZipFile.OpenRead(filePath)) { // ... do stuff with zip.Entries } 我也尝试过使用ZipArchive构造函数,ZipFile.OpenRead是一个快捷方式 Entries属性的输出: 代码/视图/ 代码/views/Index.cshtml 配置/质量保证/ 配置/qa/dist/ config/qa/dist/Web.config 预期产

这是我用来从zip文件中读取和获取条目的代码:

using (var zip = ZipFile.OpenRead(filePath)) {
    // ... do stuff with zip.Entries
}
我也尝试过使用ZipArchive构造函数,ZipFile.OpenRead是一个快捷方式

Entries属性的输出:

代码/视图/ 代码/views/Index.cshtml 配置/质量保证/ 配置/qa/dist/ config/qa/dist/Web.config

预期产出:

代码/ 代码/视图/ 代码/views/Index.cshtml 配置/ 配置/质量保证/ 配置/qa/dist/ config/qa/dist/Web.config


为什么顶级文件夹/目录作为条目被排除在外?没有其他目录被排除在外,所以我觉得这是不一致的行为。这是框架中的一个bug吗?

我不确定zip格式是如何存储目录条目的,但可能是创建zip文件的软件有点奇怪。你试过查看其他程序创建的ZIP吗?似乎这些条目不是由打包软件添加的。您可以发布示例.zip文件吗?丢失的条目会破坏您的程序吗?例如,System.IO.Directory.Create创建所有缺少的子目录,应该可以正常工作。ZIP文件是在Windows中使用Explorer.exe创建的。对于我的应用程序,我需要层次结构列表以一致的方式工作。不管ZIP文件是如何创建的。否则,我的应用程序的行为将不一致。因此,为了解决这个问题,我必须为ZipArchive类创建一个包装器,并正确地执行此操作。我的问题是这是否是出于设计以及原因。这也是完全合法的,但在您的案例中只有两个条目不是很好:code/views/Index.cshtml和config/qa/dist/Web.config