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:
- Skapa ett 7z (7-Zip) arkiv med C#
- Skapa ett AES-krypterat 7z-arkiv med C#
- Ställ in olika lösenord för 7z-poster med C#
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:
- Installera med NuGet Package Manager.
- Ladda ner DLL and add its reference to the project.
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.
- Öppna en ny FileStream för att skapa en 7z-fil.
- Skapa en instans av klassen SevenZipArchive.
- Lägg till filen i arkivet med metoden SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings).
- Skapa och spara arkiv med metoden SevenZipArchive.Save(Stream).
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.
- Skapa en instans av klassen SevenZipArchive.
- Skicka mappens sökväg till metoden SevenZipArchive.CreateEntries(String, Boolean).
- Anropa metoden SevenZipArchive.Save(String).
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.
- Skapa en ny FileStream för 7z-arkivfilen.
- Få åtkomst till varje filpost med klassen FileInfo.
- Skapa en instans av klassen SevenZipArchive.
- Skapa inträde i 7z-arkivet med SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)
- Spara arkivet med metoden SevenZipArchive.Save(Stream).
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.