我有一个更新应用程序的解决方案,该应用程序使用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或者其他东西)?
如果您对如何完成此任务有任何其他提示,我将不胜感激。
答案 0 :(得分:1)
OverwriteSilently 可以覆盖文件。 如果文件已经存在,即使该文件是只读文件,它也不会抛出异常。
不能做的是:
后者很可能是文件" nomedoarquivo.exe"的情况。尝试覆盖时,此可执行文件可能正在运行。