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

Pau*_*iro 6 c# wpf unzip visual-studio-2012

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

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

其中:解@ "c: \ SDA \ CantinaEscolar"压缩zip文件的位置(files).

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

System.IO.IOException: The file 'c:\IASD\CantinaEscola\nomedoarquivo.exe' already exists
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 3

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

它不能做的是:

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

文件“nomedoarquivo.exe”很可能属于后者。该可执行文件可能在尝试覆盖时正在运行。