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.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")
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"); }
}
}
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);
}
}
}
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.