Criar arquivo 7Zip em C#

No post anterior, discuti diferentes maneiras de criar arquivos ZIP usando C#. O artigo também abordou como criar arquivos ZIP criptografados e protegidos por senha. Além do formato ZIP, existem alguns outros formatos de arquivo comumente usados, como 7z, tar, RAR, etc. Entre estes, o formato de arquivo 7z é baseado na arquitetura de código aberto e é usado para compactar arquivos e pastas com alta taxa de compactação. Ele também suporta criptografia AES de 256 bits e também permite criptografar os nomes dos arquivos. Neste artigo, demonstrarei como criar arquivos 7z (7-Zip) programaticamente usando C#.

Este artigo está dividido nas seguintes seções:

Todas as etapas e exemplos de código neste artigo são baseados em Aspose.ZIP para .NET. Portanto, certifique-se de ter instalado a API usando um dos seguintes métodos:

Criar arquivo 7z (7-Zip) usando C#

Pode haver dois cenários possíveis de compactação de arquivos em um arquivo 7z. Ou você tem apenas um único arquivo ou pode haver vários arquivos a serem compactados. Você pode lidar com ambos os cenários explicitamente.

Criar arquivo 7z com entrada única

A seguir estão as etapas para criar um arquivo 7z com uma única entrada.

O exemplo de código a seguir mostra como criar um arquivo 7z (7-Zip) usando C#.

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    using (var archive = new SevenZipArchive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(sevenZipFile);
    }
}

Criar arquivo 7z com várias entradas

Neste caso, você pode colocar os arquivos em uma pasta e passar o caminho da pasta para o método SevenZipArchive.CreateEntries(). A seguir estão as etapas para adicionar várias entradas de arquivo a um arquivo 7z.

O exemplo de código a seguir mostra como criar um arquivo 7z com várias entradas usando C#.

using (SevenZipArchive archive = new SevenZipArchive())
{
    archive.CreateEntries(dataDir);
    archive.Save("SevenZip.7z");
}

Criar um arquivo 7z criptografado AES usando C#

O formato 7z suporta criptografia AES para proteger os arquivos. Para criptografar um arquivo 7z, a classe SevenZipAESEncryptionSettings é usada. O exemplo de código a seguir mostra como criar um arquivo 7z criptografado por AES usando C#.

using (var archive = new SevenZipArchive(new SevenZipEntrySettings(null, new SevenZipAESEncryptionSettings("p@s$"))))
{
    archive.CreateEntry("data.bin", new MemoryStream(new byte[] { 0x00, 0xFF }));
    archive.Save("archive.7z");
}

Definir senhas diferentes para entradas 7z usando C#

O formato 7z também permite especificar uma senha diferente para cada entrada de arquivo. Por exemplo, se você for compactar dois arquivos em um arquivo 7z, poderá especificar uma senha diferente para cada arquivo. A seguir estão as etapas para definir senhas diferentes para entradas 7z.

O exemplo de código a seguir mostra como definir uma senha para cada entrada em um arquivo 7z.

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    FileInfo fi1 = new FileInfo("data1.bin");
    FileInfo fi2 = new FileInfo("data2.bin");
    FileInfo fi3 = new FileInfo("data3.bin");
    using (var archive = new SevenZipArchive())
    {
        archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
        archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
        archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
        archive.Save(sevenZipFile);
    }
}

Conclusão

Neste artigo, aprendemos como criar arquivos 7z programaticamente usando C#. Além disso, vimos como criar arquivos 7z criptografados por AES e definir uma senha para cada entrada de arquivo. Você pode aprender mais sobre compressão/descompressão de arquivos aqui.

Artigos relacionados