Ir para o conteúdo do rodapé
AJUDA DO .NET

SevenZip em C# (Como funciona para desenvolvedores)

No domínio das ferramentas de compressão e arquivamento de arquivos, o 7-Zip se destaca como uma solução versátil e de código aberto. Conhecido por suas altas taxas de compressão e suporte a diversos formatos de arquivo, o 7-Zip tornou-se uma escolha popular para usuários que buscam gerenciamento eficiente de arquivos. Neste artigo, exploraremos o que é o 7-Zip, como funciona, seus principais recursos, o formato exclusivo 7z, as taxas de compressão e seu SDK .NET para C# que auxilia na criação de arquivos 7z . Além disso, apresentaremos o IronZIP como uma solução alternativa no ecossistema .NET .

O que é 7-Zip?

O 7-Zip é um utilitário gratuito e de código aberto para compactação e descompactação de arquivos. Desenvolvido por Igor Pavlov, o 7-Zip suporta uma ampla variedade de formatos de compressão, tornando-se uma ferramenta versátil para gerenciar e organizar dados.

Sevenzip C# (Como funciona para desenvolvedores) Figura 1 - 7-Zip

Principais características

  • Alta taxa de compressão: Uma das principais características do 7-Zip é sua capacidade de atingir altas taxas de compressão, muitas vezes superando outras ferramentas de arquivamento. Isso pode resultar em economias significativas em termos de espaço de armazenamento e transferências de arquivos mais rápidas para uma pasta.
  • Ampla compatibilidade com formatos: O 7-Zip é compatível com diversos formatos de arquivo, incluindo 7z, ZIP, TAR, GZIP e muitos outros. Essa versatilidade garante a compatibilidade com diferentes sistemas operacionais e softwares.
  • Criptografia e segurança: O 7-Zip oferece recursos de criptografia robustos, permitindo que os usuários protejam seus arquivos com criptografia AES-256. Isso garante que os dados sensíveis permaneçam protegidos.
  • Suporte à linha de comando: Além de sua interface gráfica amigável, o 7-Zip oferece uma versão de linha de comando para usuários que preferem automação e scripts em suas tarefas de gerenciamento de arquivos.

Como funciona

O 7-Zip utiliza algoritmos de compressão avançados para reduzir o tamanho de arquivos e pastas. Ele utiliza o algoritmo de compressão LZMA (Lempel-Ziv-Markov chain-Algorithm) para seu formato nativo 7z, o que contribui para suas impressionantes taxas de compressão. O utilitário também suporta outros formatos comuns, como ZIP, TAR e GZIP.

Formato 7z

O formato 7z é o formato proprietário usado pelo 7-Zip para seus arquivos compactados. Ele utiliza o algoritmo de compressão LZMA, conhecido por suas excelentes taxas de compressão. O formato 7z suporta recursos como compressão sólida, divisão de arquivos e arquivos autoextraíveis.

Taxa de compressão

O 7-Zip é conhecido por suas excelentes taxas de compressão, especialmente ao usar o formato 7z com o algoritmo LZMA. Essa eficiência resulta em tamanhos de arquivo menores, sem comprometer a integridade dos arquivos compactados. Os arquivos criados pelo 7-Zip são compactados de 30 a 70% melhor do que o formato ZIP normal.

7-Zip LZMA SDK for C

Para desenvolvedores que trabalham com C#, o 7-Zip oferece um SDK .NET que permite a integração perfeita das funcionalidades do 7-Zip em aplicações personalizadas. O SDK permite que os desenvolvedores realizem operações de compressão e descompressão programaticamente, proporcionando flexibilidade no gerenciamento de arquivos compactados em projetos C#.

Se você deseja usar o 7-Zip em um aplicativo C#, pode utilizar o SDK do 7-Zip ou o executável de linha de comando em seu código C#. Segue uma breve descrição geral de ambas as abordagens.

1. SDK do 7-Zip (7z.dll)

O SDK do 7-Zip inclui a biblioteca 7z.dll, que você pode usar em seu projeto C#. Essa abordagem permite realizar operações de compressão e descompressão programaticamente.

Aqui está um exemplo de código-fonte usando o SDK do 7-Zip:

using SevenZip;

class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");

        // Example: Extract files from an archive
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }

        // Example: Compress files into an archive
        using (var compressor = new SevenZipCompressor())
        {
            // Add files to the archive
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
using SevenZip;

class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");

        // Example: Extract files from an archive
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }

        // Example: Compress files into an archive
        using (var compressor = new SevenZipCompressor())
        {
            // Add files to the archive
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
Imports SevenZip

Friend Class Program
	Shared Sub Main()
		' Specify the path to the 7z.dll library
		SevenZipBase.SetLibraryPath("path_to_7z.dll")

		' Example: Extract files from an archive
		Using extractor = New SevenZipExtractor("archive.7z")
			extractor.ExtractArchive("output_directory")
		End Using

		' Example: Compress files into an archive
		Using compressor = New SevenZipCompressor()
			' Add files to the archive
			compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Certifique-se de substituir "path_to_7z.dll" pelo caminho real da biblioteca 7z.dll. Você pode encontrar o arquivo 7z.dll no diretório de instalação do 7-Zip.

2. Executável de linha de comando

Alternativamente, você pode usar o executável de linha de comando do 7-Zip (7z.exe) em seu código-fonte C# invocando-o através da classe System.Diagnostics.Process.

using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Example: Extract files from an archive using the command-line executable
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Example: Extract files from an archive using the command-line executable
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
Imports System.Diagnostics

Friend Class Program
	Shared Sub Main()
		' Example: Extract files from an archive using the command-line executable
		Dim archivePath As String = "archive.7z"
		Dim outputPath As String = "output_directory"
		Dim processStartInfo As New ProcessStartInfo With {
			.FileName = "7z.exe",
			.Arguments = $"x ""{archivePath}"" -o""{outputPath}""",
			.RedirectStandardOutput = True,
			.UseShellExecute = False,
			.CreateNoWindow = True
		}
		Using process As New Process With {.StartInfo = processStartInfo}
			process.Start()
			process.WaitForExit()
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Certifique-se de que "7z.exe" esteja no PATH do seu sistema ou forneça o caminho completo para o executável na propriedade FileName.

Apresentando o IronZIP

Embora o 7-Zip seja uma solução robusta, desenvolvedores que exploram alternativas dentro do ecossistema .NET podem achar o IronZIP uma opção interessante. O IronZIP é uma biblioteca de compressão .NET que oferece recursos semelhantes ao 7-Zip, fornecendo aos desenvolvedores as ferramentas necessárias para comprimir, descomprimir e manipular arquivos em seus aplicativos C#.

Sevenzip C# (Como funciona para desenvolvedores) Figura 2 - IronZIP

IronZIP é uma poderosa biblioteca C# para arquivos ZIP que simplifica o trabalho com arquivos ZIP em aplicações .NET . Com sua API amigável, os desenvolvedores podem criar, ler e extrair arquivos ZIP de forma eficiente com o IronZIP . Aqui está um pequeno trecho de código que demonstra a facilidade de criar um arquivo ZIP usando o IronZIP :

using IronZip;

class Program
{
    static void Main()
    {
        // Specify the path for the new ZIP archive
        string zipFilePath = "output.zip";

        // Create an empty ZIP archive
        using (var archive = new IronArchive(zipFilePath))
        {
            // Add files to the ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }

        Console.WriteLine("ZIP archive created successfully!");
    }
}
using IronZip;

class Program
{
    static void Main()
    {
        // Specify the path for the new ZIP archive
        string zipFilePath = "output.zip";

        // Create an empty ZIP archive
        using (var archive = new IronArchive(zipFilePath))
        {
            // Add files to the ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }

        Console.WriteLine("ZIP archive created successfully!");
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main()
		' Specify the path for the new ZIP archive
		Dim zipFilePath As String = "output.zip"

		' Create an empty ZIP archive
		Using archive = New IronArchive(zipFilePath)
			' Add files to the ZIP
			archive.AddArchiveEntry("./assets/file1.txt")
			archive.AddArchiveEntry("./assets/file2.jpg")
			archive.AddArchiveEntry("./assets/file3.pdf")
		End Using

		Console.WriteLine("ZIP archive created successfully!")
	End Sub
End Class
$vbLabelText   $csharpLabel

Para obter mais informações sobre o IronZIP e suas funcionalidades ou exemplos de código, visite a página de documentação do IronZIP .

Conclusão

O 7-Zip continua sendo uma força dominante no mundo da compressão de arquivos, oferecendo aos usuários uma solução de código aberto, rica em recursos e com taxas de compressão excepcionais. O suporte a diversos formatos de arquivo e os recursos robustos de criptografia fazem dele uma opção versátil tanto para usuários casuais quanto para desenvolvedores. O SDK .NET amplia ainda mais sua utilidade para desenvolvedores C#, facilitando a integração perfeita em aplicativos personalizados. Para quem busca uma alternativa no universo .NET , o IronZIP se destaca como um concorrente notável, oferecendo funcionalidades semelhantes, porém adaptadas às necessidades específicas dos desenvolvedores C#.

A IronZIP oferece um período de IronZIP gratuito . Faça o download e experimente a biblioteca IronZIP .NET Core e Framework na página de downloads do IronZIP .

Perguntas frequentes

O que é o 7-Zip e por que ele é popular?

O 7-Zip é um utilitário de arquivamento de arquivos de código aberto conhecido por suas altas taxas de compressão e suporte a múltiplos formatos de arquivo, como 7z, ZIP, TAR e GZIP. É popular devido à sua eficiência no gerenciamento de dados e à forte criptografia AES-256 para segurança.

Como o formato 7z difere de outros formatos?

O formato 7z utiliza o algoritmo de compressão LZMA, que oferece eficiência de compressão superior, normalmente alcançando uma compressão 30 a 70% melhor do que os formatos ZIP padrão. Isso o torna ideal para usuários que priorizam a redução do tamanho do arquivo.

Como os desenvolvedores podem usar o 7-Zip em projetos C#?

Os desenvolvedores podem aproveitar o SDK .NET do 7-Zip, que inclui a biblioteca 7z.dll, para integrar funcionalidades de compressão e descompressão em aplicativos C# de forma programática. Como alternativa, a ferramenta de linha de comando 7z.exe pode ser utilizada para gerenciar arquivos compactados.

Quais as vantagens que o IronZIP oferece para aplicações .NET?

O IronZIP oferece uma API amigável para aplicações .NET, simplificando a criação, leitura e extração de arquivos ZIP. É uma alternativa viável para desenvolvedores que buscam facilidade de uso e recursos robustos de gerenciamento de arquivos ZIP em projetos C#.

Posso usar o 7-Zip para criptografar arquivos?

Sim, o 7-Zip oferece recursos de criptografia robustos usando AES-256, permitindo que os usuários criptografem arquivos com segurança e protejam dados confidenciais durante a compressão.

Existe alguma versão de avaliação do IronZIP disponível?

Sim, o IronZIP oferece uma versão de avaliação gratuita que pode ser baixada do site deles. Essa versão de avaliação permite que os desenvolvedores explorem seus recursos e integrem o gerenciamento de arquivos ZIP em aplicativos .NET.

Quais são as principais características do 7-Zip?

O 7-Zip oferece recursos como altas taxas de compressão, suporte a uma ampla variedade de formatos, criptografia AES-256 robusta e uma interface amigável, além de suporte à linha de comando para atender às diversas necessidades dos usuários.

Como posso usar o arquivamento de arquivos em uma aplicação C#?

Você pode usar o arquivamento de arquivos em aplicativos C# empregando bibliotecas como o SDK do 7-Zip com o arquivo 7z.dll ou o IronZIP, ambos oferecendo ferramentas abrangentes para lidar com a compressão e extração de arquivos.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim