System.IO.Compression和ZipFile - 提取和覆盖

时间:2013-03-17 18:47:37

标签: .net vb.net zip compression system.io.compression

我正在使用标准的VB.NET库来提取和压缩文件。它的工作原理也是如此,但是当我必须提取文件时,问题就出现了。

我使用的代码

进口:

Imports System.IO.Compression

方法我崩溃时调用

ZipFile.ExtractToDirectory(archivedir, BaseDir)

archivedir和BaseDir也已设置,实际上如果没有要覆盖的文件,它就可以工作。问题正好出现了。

如何在不使用第三方库的情况下覆盖提取中的文件?

(注意我使用的是参考System.IO.Compression和System.IO.Compression.Filesystem)

由于文件放在已有文件的多个文件夹中,我会避​​免手动

IO.File.Delete(..)

1 个答案:

答案 0 :(得分:15)

使用覆盖为真的ExtractToFile来覆盖与目标文件同名的现有文件

    Dim zipPath As String = "c:\example\start.zip" 
    Dim extractPath As String = "c:\example\extract" 

    Using archive As ZipArchive = ZipFile.OpenRead(zipPath)
        For Each entry As ZipArchiveEntry In archive.Entries
            entry.ExtractToFile(Path.Combine(extractPath, entry.FullName), True)
        Next 
    End Using