Comment faire pour compresser les fichiers (Tous les fichiers ou dossiers) dans vb.net 2005?Comment faire pour compresser les fichiers dans vb.net 2005
Répondre
Jetez un oeil à SharpZipLib
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.
NB: Les exemples s'appuient sur la bibliothèque commerciale Chilkat ZIP. – Cheeso
Vous pouvez utiliser ICSharCode's bibliothèque SharpZipLib.
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.
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
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.
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)
DotNetZip est activement en cours d'amélioration sur CodePlex, et simplifie certaines méthodes plus SharpZipLib. –