Как заархивировать файлы (любые файлы или папки) в vb.net 2005?
как архивировать файлы в vb.net 2005
Ответы (6)
DotNetZip – это простая в использовании бесплатная библиотека с открытым исходным кодом для обработки ZIP-файлов в VB.NET и других языки .NET.
Некоторый пример кода VB.NET для создания zip-файла с добавлением файлов по одному:
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
Или добавьте файлы в группу:
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
или Код для архивирования всего каталога или папки:
Using zip As ZipFile = New ZipFile
zip.AddDirectory(directory)
zip.Save(targetZip)
End Using
Код для извлечения 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
Извлечь с индикатором выполнения:
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 имеет события выполнения для чтения, сохранения или извлечения, поэтому вы можете включить индикаторы выполнения в ASP.NET или Windows Forms. Он создает защищенные паролем zip-файлы, Unicode, ZIP64 и самораспаковывающиеся архивы. Создаваемые им zip-файлы совместимы со всеми другими zip-инструментами — WinZip, WinRAR, Windows Explorer, Pkunzip и т. д. Есть хороший файл справки (онлайн-версия здесь) с множеством примеров кода. Также доступны образцы.
Взгляните на SharpZipLib.
Я не умею программировать на VB.NET. Однако поиск показал интересную ссылку: Примеры Zip-сжатия VB.NET. Я надеюсь, что это будет полезно для вас.
Вы можете использовать наш компонент Rebex ZIP.
Вот несколько примеров операций, которые вы запрашиваете:
Простое архивирование файлов одной строкой кода:
' 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")
Простая распаковка в одну строку кода:
' 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")
Другие примеры можно найти здесь.
Оболочка это, ва-ла сделано в две строки
Dim zipcmd as String = "zip -r C:\directory\of\my\folder C:\directory\of\my\zip"
Shell("cmd.exe /c" + zipcmd1, AppWinStyle.Hide, True)