Como zipar ficheiros / directórios em VB.NET?

gostaria de fechar uma pasta que contém ficheiros e subpastas em VB.NET a minha solução tem como alvo o perfil do cliente. NET 4.0.

vejo que existe uma classe de ZipFile para. NET 4.5, E System.IO.Packing para.NET 4.0 (mas não Perfil de cliente). Então, isso não vai ajudar. Eu observo que há também uma classe GZipStream, mas eu nunca vejo .ficheiros gz a circular, por isso não sei se é uma boa abordagem. Prefiro um básico .arquivo zip que eu sei que meus usuários podem trabalhar com.

Existe um um punhado de soluções de terceiros, como http://icsharpcode.github.io/SharpZipLib mas presumo que estejam muito mais inchados do que as linhas de código 10-20 que procuro. Talvez seja a resposta certa...Não sei.

Só estou à espera de algumas linhas de VB.NET código para zipar alguns arquivos em uma solução de alvo. net 4.0 CP.

Author: OfficeAddinDev, 2015-05-05

4 answers

Criar ZIP a partir da pasta" código".

Imports System.IO.Compression    
ZipFile.CreateFromDirectory("source","destination.zip",CompressionLevel.Optimal,False)

Extrair ZIP para a pasta" destino".

ZipFile.ExtractToDirectory("destination.zip","destination")
 1
Author: Naitik Patel, 2015-05-05 04:44:36

Simplesmente podes fazê-lo usando iónico.Postal.Dll

Aqui está a função para isto, aceitando duas variáveis caminho de origem e caminho de destino

public static void ExecuteBackupAsZip(string SourcePath, string DestinationPath)
        {
            using (var zip = new Ionic.Zip.ZipFile())
            {
                try
                {
                    zip.AddDirectory(SourcePath);
                    zip.Save(DestinationPath);
                }
                catch { Console.WriteLine("Failed to execute backup"); }
            }
        }
 0
Author: , 2015-05-05 03:50:19

O Website MSDN tem uma classe que pode ajudá-lo aqui chamada ZipFile

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication {
  class Program {
    static void Main(string[] args) {
      string startPath = @"c:\example\start";
      string zipPath = @"c:\example\result.zip";
      string extractPath = @"c:\example\extract";
      'Creates Zip File to directory as specified (startPath). And puts it in a specifed folder (zipPath)
            ZipFile.CreateFromDirectory(startPath, zipPath);
              '
      Extracts Zip File to directory as specified(extractpath)
      ZipFile.ExtractToDirectory(zipPath, extractPath);
    }
  }
}
Espero que isto ajude!
 0
Author: BinaryEvolved, 2015-05-05 04:46:24

Incapaz de comentar na secção de comentários devido à falta de reputação (devido a ser novo aqui).

Nas duas respostas indicando que usando o sistema. IO. compressão pode ser usado que foram comentados como não trabalhando no NET 4.0 CP, isto deve ser notado, como as respostas originais não incluem um fato muitas vezes negligenciado.

É necessário adicionar uma referência ao projecto para activar a "compressão do sistema.IO.". isto não é óbvio para muitos utilizadores novos VS, e a menos que o o refrence é adicionado, de fato parece que "System. IO. Compression" não funciona na NET 4.0.

Neste caso, a referência que precisa de ser adicionada é System. IO. Compression. Filesystem (v4.0.0.0). Pode - se também querer adicionar a Referência: sistema. IO. compressão.

A " Add Reference..."a janela está no menu" projecto " em VS.

 0
Author: an odder guest, 2016-07-20 17:56:14