ExtractExistingFileAction.OverwriteSilently不会覆盖给定目录中的文件

时间:2014-04-04 14:28:42

标签: c# wpf visual-studio-2012 unzip

我有一个更新应用程序的解决方案,该应用程序使用API​​ DotNetZip(http://dotnetzip.codeplex.com/)来处理ZIP文件。一种方法是覆盖某些文件夹中的文件,如下所示。

ZipFile zipFile = ZipFile.Read(file);
    {
        foreach (ZipEntry zipEntry in zipFile)
        {
            zipEntry.Extract(@"C:\IASD\CantinaEscolar", ExtractExistingFileAction.OverwriteSilently);
        }
    }

其中:@ "c: \ SDA \ CantinaEscolar"是拉链(files)内的文件的解压缩位置。

现在,如果目录已包含将要解压缩的同名文件,则应用程序将返回与目录中已存在的文件相关的错误。

System.IO.IOException: The file 'c:\IASD\CantinaEscola\nomedoarquivo.exe' already exists

OverwriteSilently此方法不应以静默方式覆盖解压缩的文件(不请求用户确认)?

或者:有没有办法强制在目录中覆盖这个(-type f或者其他东西)?

如果您对如何完成此任务有任何其他提示,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

OverwriteSilently 可以覆盖文件。 如果文件已经存在,即使该文件是只读文件,它也不会抛出异常。

不能做的是:

    如果解压缩是在不允许的凭据下完成的,则
  • 覆盖。
  • 在文件使用时覆盖。

后者很可能是文件" nomedoarquivo.exe"的情况。尝试覆盖时,此可执行文件可能正在运行。