提取存档条目将创建一个位于指定目标目录之外的文件

时间:2013-12-06 04:57:27

标签: c# jar extract unzip

尝试提取.jar文件时,我不断获取:

  

提取存档条目会创建一个超出指定目标目录的文件

任何人都可以帮助我吗?这是我的代码:

try
{
    using (ZipArchive archive = ZipFile.Open(jarLocationTXT.Text, ZipArchiveMode.Update))
    {
        archive.ExtractToDirectory(@"C:\Users\Neglekt\Monix Software\MCMI\CurExtract\");
    } 
}
catch (IOException ExtrEx)
{
    MessageBox.Show(ExtrEx.ToString());
    MessageBox.Show("An error occured while processing your data! \n Error code: E:002", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

1 个答案:

答案 0 :(得分:1)

documentation表示在以下情况下抛出类似的异常:

  

例如,条目名称包含父目录访问者。

父目录访问者例如是..。当您在命令提示符下键入cd ..时,您告诉更改目录cd)程序转到父目录,这就是{{1}意味着。因此抛出异常是因为zip文件中的条目包含对某个父目录的引用。

在使用..时,似乎没有办法绕过该检查,因此选项是使用静态或扩展方法滚动自己的提取方法。我的意思是创建一个你自己的方法:

  1. 采用zip文件和目标目录的路径
  2. ExtractToDirectory
  3. 打开文件
  4. 通过Entries
  5. 进行迭代
  6. 使用提供的目标目录和条目的相对路径将每个ZipArchiveEntry提取到一个文件。