Skapa 7Zip-arkiv i C#

I föregående inlägg har jag diskuterat olika sätt att skapa ZIP-arkiv med C#. Artikeln behandlade också hur man skapar krypterade och lösenordsskyddade ZIP-arkiv. Förutom ZIP-format finns det några andra vanliga arkivformat som 7z, tar, RAR, etc. Bland dessa är 7z-arkivformat baserat på öppen källkodsarkitektur och det används för att komprimera filer och mappar med ett högt komprimeringsförhållande. Den stöder också 256-bitars AES-kryptering och tillåter kryptering av filernas namn också. I den här artikeln kommer jag att visa hur man skapar 7z (7-Zip) arkiv programmatiskt med C#.

Den här artikeln är uppdelad i följande avsnitt:

Alla steg och kodexempel i den här artikeln är baserade på Aspose.ZIP for .NET. Se därför till att du har installerat API:t med någon av följande metoder:

Skapa 7z (7-Zip) arkiv med C#

Det kan finnas två möjliga scenarier för att komprimera filer till ett 7z-arkiv. Antingen har du bara en enda fil eller så kan det finnas ett gäng filer som ska komprimeras. Du kan hantera båda scenarierna explicit.

Skapa 7z-arkiv med en enda post

Följande är stegen för att skapa ett 7z-arkiv med en enda post.

Följande kodexempel visar hur man skapar ett 7z (7-Zip) arkiv med C#.

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

Skapa 7z-arkiv med flera poster

I det här fallet kan du lägga filerna i en mapp och skicka mappens sökväg till metoden SevenZipArchive.CreateEntries(). Följande är steg för att lägga till flera filposter till ett 7z-arkiv.

Följande kodexempel visar hur man skapar ett 7z-arkiv med flera poster med C#.

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

Skapa ett AES-krypterat 7z-arkiv med C#

7z-formatet stöder AES-kryptering för att säkra filerna. För att kryptera en 7z-fil används klassen SevenZipAESEncryptionSettings. Följande kodexempel visar hur man skapar ett AES-krypterat 7z-arkiv med 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");
}

Ställ in olika lösenord för 7z-poster med C#

7z-formatet låter dig också ange ett annat lösenord för varje filpost. Om du till exempel ska komprimera två filer i ett 7z-arkiv kan du ange ett annat lösenord för varje fil. Följande är stegen för att ställa in olika lösenord för 7z-poster.

Följande kodexempel visar hur man ställer in ett lösenord för varje post i ett 7z-arkiv.

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

Slutsats

I den här artikeln har vi lärt oss hur man skapar 7z-arkiv programmatiskt med C#. Dessutom har vi sett hur man skapar AES-krypterade 7z-filer och ställer in ett lösenord för varje filpost. Du kan lära dig mer om komprimering/dekomprimering av filer från här.

relaterade artiklar