';找不到路径的一部分';在.net core中提取zip时出错

';找不到路径的一部分';在.net core中提取zip时出错,.net,asp.net-core,.net-core,path,.net,Asp.net Core,.net Core,Path,我试图将zip文件解压缩到某个位置,但出现以下错误: System.IO.DirectoryNotFoundException:'找不到 路径'D:\test\Server\project\test.edb\Article.eod' 我正在使用管理员权限运行VS Studio。源文件存在,调试时相对路径似乎正确。实际的zip文件包含文件夹和文件夹中的文件,我不确定这是否是问题的原因 string zipPath = @".\..\..\assets\project.zip"; string pr

我试图将zip文件解压缩到某个位置,但出现以下错误:

System.IO.DirectoryNotFoundException:'找不到 路径'D:\test\Server\project\test.edb\Article.eod'

我正在使用管理员权限运行VS Studio。源文件存在,调试时相对路径似乎正确。实际的zip文件包含文件夹和文件夹中的文件,我不确定这是否是问题的原因

string zipPath = @".\..\..\assets\project.zip";
string projectPath = @".\..\..\project";
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
    foreach(ZipArchiveEntry entry in archive.Entries)
    {
        String fullPath = Path.Combine(projectPath, entry.FullName);
        if (String.IsNullOrEmpty(entry.Name))
        {
            Directory.CreateDirectory(Path.GetDirectoryName(fullPath));
        }
        entry.ExtractToFile(fullPath, true);
    }
}

entry.ExtractToFile
将zip存档中的条目提取到一个文件中,它将有目录错误

如果你想提取一个zip文件,你可以使用

ZipFile.ExtractToDirectory(zipPath, projectPath);

请参阅

点击F10并调试代码。只有当
entry.Name
为空时才创建目录,这很可能永远不会发生。@CodeCaster但逻辑不正确吗?如果当前条目是foldername而不是文件,则会创建一个目录,然后将其中的文件递归地提取到该目录中。我对该API不太熟悉,您确定zip文件中的目录由条目表示吗?好吧,它不是,所以你的
if()
永远不会被执行。同样,请仔细检查代码以找出答案。调用
Directory.CreateDirectory()
也没有什么坏处,如果该方法已经存在,它本身将不会做任何事情。如果该文件已经存在,ZipFile.ExtractToDirectory(zipPath,projectPath)将失败。ExtractToFile(完整路径,true)允许您覆盖