2009-05-25 2 views

ответ

1

Посмотрите SharpZipLib

+1

DotNetZip активно совершенствуется на CodePlex, и упрощает некоторые методы более SharpZipLib. –

0

Я не знаю, как программировать на VB.NET. Однако поиск показал интересную ссылку: Zip Compression VB.NET Examples. Надеюсь, это будет полезно для вас.

+0

NB: Примеры полагаются на коммерческую ZIP-библиотеку Chilkat. – Cheeso

16

DotNetZip - это простая в использовании, бесплатная библиотека с открытым исходным кодом для обработки ZIP-файлов на VB.NET и других языках .NET.

Некоторые примеры кода VB.NET, чтобы создать файл почтового индекса, добавление файлов в один момент:

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 

код для извлечения архива:

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 

Extract с индикатором прогресса:

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 и т. Д. Имеется хороший файл справки (online version here) с кучей примеров кода. Есть также samples available for download.

+0

Я всегда использовал SharpZipLib в прошлом, но я только что попробовал DotNetZip, и это УДИВИТЕЛЬНО. Гораздо проще в использовании, и мне потребовалось несколько минут, чтобы настроить. Спасибо, Чиз! – Urbycoz

0

Вы можете использовать наш компонент 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") 

Больше образцов можно найти here.

0

Shell это, ва-ла сделано в две строки

Dim zipcmd as String = "zip -r C:\directory\of\my\folder C:\directory\of\my\zip" 
Shell("cmd.exe /c" + zipcmd1, AppWinStyle.Hide, True) 
Смежные вопросы