Как программно разархивировать zip?

Разархивировать или заархивировать любой zip файл буквально в несколько строк кода, можно с помощью бесплатной библиотеки DotNetZip.

 // Разархивирование
try
{
    using (ZipFile zipApp = new ZipFile(@"D:\Test.zip"))
    {
        DirectoryInfo di = new DirectoryInfo(@"C:\!");
        if (!di.Exists)
        {
            di.Create();
        }

        zipApp.ExtractAll(di.FullName,true);

    }
}
catch (System.Exception ex)
{
    MessageBox.Show("exception: " + ex);
}

Для того что бы отобразить процесс выполнения архивации/разархивации необходимо воспользоваться событием ExtractProgress:

public void ExtractProgress(object sender, ExtractProgressEventArgs e)
{
    if (e.EventType == ZipProgressEventType.Extracting_EntryBytesWritten)
    {
        pbBytes.Maximum = (int) e.TotalBytesToTransfer;
        pbBytes.Value = (int) e.BytesTransferred;
    }
    else if (e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry)
    {
        pbFiles.Maximum = e.EntriesTotal;
        pbFiles.Value = e.EntriesExtracted;
    }
}
private void Extract()
{
// Разархивирование
try
{
    using (ZipFile zipApp = new ZipFile(@"D:\Test.zip"))
    {
        DirectoryInfo di = new DirectoryInfo(@"C:\!");
        if (!di.Exists)
        {
            di.Create();
        }
zipApp.ExtractProgress += ExtractProgress;
        zipApp.ExtractAll(di.FullName,true);
    }
}
catch (System.Exception ex1)
{
    MessageBox.Show("exception: " + ex1);
}        
}

P.S. Для этого также можно использовать встроенный класс GZipStream и еще одну сторонюю библиотеку SharpZipLib не говоря уже о вызове установленного архиватора через параметры командной строки.

P.P.S. Для того что бы не копировать каждый раз с исполняемым файлом еще и библиотеку для разархивирования, можно воспользоваться ilmerge

Currently rated 5.0 by 3 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

Comments

Add comment


 

biuquote
  • Comment
  • Preview
Loading