как архивировать файлы в vb.net 2005

Как заархивировать файлы (любые файлы или папки) в vb.net 2005?


person somu    schedule 25.05.2009    source источник


Ответы (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 и т. д. Есть хороший файл справки (онлайн-версия здесь) с множеством примеров кода. Также доступны образцы.

person Cheeso    schedule 26.05.2009
comment
Я всегда использовал SharpZipLib в прошлом, но я только что попробовал DotNetZip, и это ПОТРЯСАЮЩЕ. Гораздо проще в использовании, и настройка заняла у меня несколько минут. Спасибо, Чисо! - person Urbycoz; 20.02.2012

Взгляните на SharpZipLib.

person Eoin Campbell    schedule 25.05.2009
comment
DotNetZip активно совершенствуется в CodePlex и упрощает некоторые методы по сравнению с SharpZipLib. - person Gordon Bell; 27.07.2009

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

person Alan Haggai Alavi    schedule 25.05.2009
comment
NB: примеры основаны на коммерческой ZIP-библиотеке Chilkat. - person Cheeso; 26.05.2009

Вы можете использовать ICSharCode SharpZipLib.

person Kirtan    schedule 25.05.2009

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

Другие примеры можно найти здесь.

person Jan Šotola    schedule 16.09.2010

Оболочка это, ва-ла сделано в две строки

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