2009-05-25 4 views

Répondre

1

Jetez un oeil à SharpZipLib

+1

DotNetZip est activement en cours d'amélioration sur CodePlex, et simplifie certaines méthodes plus SharpZipLib. –

0

Je ne sais pas comment programmer en VB.NET. Cependant, une recherche a révélé un lien intéressant: Zip Compression VB.NET Examples. J'espère que cela vous sera utile.

+0

NB: Les exemples s'appuient sur la bibliothèque commerciale Chilkat ZIP. – Cheeso

16

DotNetZip est un outil facile à utiliser, gratuit, une bibliothèque open source pour gérer des fichiers ZIP dans VB.NET et d'autres langages .NET.

Certains exemples de code de VB.NET, pour créer un fichier zip, l'ajout de fichiers un à la fois:

Dim ZipToCreate As String = "ex1.zip" 
Dim DirectoryToZip As String = "c:\temp" 
Using zip As ZipFile = New ZipFile 
    Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) 
    Dim filename As String 
    For Each filename In filenames 
     zip.AddFile(filename) 
    Next 
    zip.Save(ZipToCreate) 
End Using 

Ou, ajouter des fichiers dans un groupe:

Dim ZipToCreate As String = "ex1.zip" 
Dim DirectoryToZip As String = "c:\temp" 
Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) 
Using zip As ZipFile = New ZipFile 
    zip.AddFiles(filenames, "temp") 
    zip.Save(ZipToCreate) 
End Using 

ou, Code à zip un répertoire entier ou un dossier:

Using zip As ZipFile = New ZipFile 
    zip.AddDirectory(directory) 
    zip.Save(targetZip) 
End Using 

code pour extraire un fichier zip:

Dim ZipFileToExtract As String = "c:\foo.zip" 
    Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) 
     Dim e As ZipEntry 
     For Each e In zip 
      ' can conditionally extract here, ' 
      ' based on name, size, date, whatever.' 
      e.Extract 
     Next 
    End Using 

Extrait avec une barre de progression:

Imports Ionic.Zip 

Module SimpleUnzip 
    Public Sub Unzip(ByVal ZipToUnpack As String, ByVal ExtractDirectory As String) 
    Try 
     Using zip As ZipFile = ZipFile.Read(ZipToUnpack) 
     Form1.ProgressBar1.Maximum = zip.Entries.Count 
     Dim entry As ZipEntry 
     For Each entry In zip 
      Form1.Label1.Text = entry.FileName 
      entry.Extract(ExtractDirectory, ExtractExistingFileAction.OverwriteSilently) 
      Form1.ProgressBar1.Value = Form1.ProgressBar1.Value + 1 
      ' sleep because it's too fast otherwise. 
      System.Threading.Thread.Sleep(50) 
     Next 
     Form1.ProgressBar1.Value = 0 
     Form1.Label1.Text = "Done" 
     End Using 
    Catch ex1 As Exception 
     Form1.Label1.Text = ("Exception: " & ex1.ToString()) 
    End Try 
    End Sub 
End Module 

DotNetZip a des événements de progrès pour la lecture, l'enregistrement ou l'extraction, de sorte que vous pouvez alimenter les barres de progression dans les formulaires ASP.NET ou Windows. Il fait des fichiers zip protégés par mot de passe, Unicode, ZIP64, et des archives auto-extractibles. Les fichiers zip qu'il produit sont compatibles avec tous les autres outils zip - WinZip, WinRAR, Windows Explorer, Pkunzip, etc. Il y a un bon fichier d'aide (online version here) avec des tonnes d'exemples de code. Il y a aussi samples available for download.

+0

J'ai toujours utilisé SharpZipLib dans le passé, mais j'ai juste essayé DotNetZip, et c'est IMPRESSIONNANT. Beaucoup plus facile à utiliser, et m'a pris quelques minutes pour mettre en place. Merci Cheeso! – Urbycoz

0

Vous pouvez utiliser notre composant Rebex ZIP.

Voici quelques exemples d'opérations que vous demandez:

simples fichiers passer comme un éclair dans une ligne de code:

' add content of the local directory C:\Data\ ' 
' to the directory \Data-2010 (within the ZIP archive) ' 
' (ZIP archive C:\archive.zip doesn't have to exist) 
ZipArchive.Add("C:\archive.zip", "C:\Data\*", "\Data-2010") 

dézipper simple dans une ligne de code:

' extract all *.TXT files from the directory \Data-2010 (within the ZIP file) ' 
' to the existing local directory C:\Data ' 
ZipArchive.Extract("C:\archive.zip", "\Data-2010\*.html", "C:\Data") 

Plus d'échantillons peuvent être trouvés here.

0

Shell lui, wa-la fait en deux lignes

Dim zipcmd as String = "zip -r C:\directory\of\my\folder C:\directory\of\my\zip" 
Shell("cmd.exe /c" + zipcmd1, AppWinStyle.Hide, True)