در پست قبلی، روشهای مختلف ایجاد آرشیو ZIP با استفاده از C# را مورد بحث قرار دادهام. این مقاله همچنین نحوه ایجاد آرشیو ZIP رمزگذاری شده و محافظت شده با رمز عبور را توضیح داد. علاوه بر فرمت ZIP، فرمتهای آرشیو رایج دیگری مانند 7z، tar، RAR و غیره وجود دارد. در این میان، فرمت آرشیو 7z بر اساس معماری منبع باز است. و برای فشرده سازی فایل ها و پوشه ها با نسبت فشرده سازی بالا استفاده می شود. همچنین از رمزگذاری AES 256 بیتی پشتیبانی می کند و امکان رمزگذاری نام فایل ها را نیز فراهم می کند. در این مقاله، نحوه ایجاد آرشیوهای 7z (7-Zip) به صورت برنامهنویسی با استفاده از C# را نشان خواهم داد.
این مقاله به بخش های زیر تقسیم می شود:
- ایجاد یک آرشیو 7z (7-Zip) با استفاده از C#
- با استفاده از C# یک آرشیو رمزگذاری شده 7z AES ایجاد کنید
- گذرواژههای مختلف را برای ورودیهای 7z با استفاده از سی شارپ تنظیم کنید
تمام مراحل و نمونه کدهای این مقاله بر اساس Aspose.ZIP for .NET است. بنابراین، مطمئن شوید که API را با استفاده از یکی از روش های زیر نصب کرده اید:
- با استفاده از NuGet Package Manager نصب کنید.
- دانلود DLL and add its reference to the project.
ایجاد آرشیو 7z (7-Zip) با استفاده از C#
ممکن است دو سناریو برای فشرده سازی فایل ها در یک آرشیو 7z وجود داشته باشد. یا فقط یک فایل دارید یا ممکن است تعداد زیادی فایل فشرده شوند. شما می توانید با هر دو سناریو به صراحت مقابله کنید.
بایگانی 7z را با یک ورودی ایجاد کنید
مراحل زیر برای ایجاد یک آرشیو 7z با یک ورودی است.
- یک FileStream جدید را برای ایجاد یک فایل 7z باز کنید.
- یک نمونه از کلاس SevenZipArchive ایجاد کنید.
- با استفاده از روش SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings) فایل را به آرشیو اضافه کنید.
- با استفاده از روش SevenZipArchive.Save(Stream) آرشیو ایجاد و ذخیره کنید.
نمونه کد زیر نحوه ایجاد یک آرشیو 7z (7-Zip) با استفاده از C# را نشان می دهد.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(sevenZipFile);
}
}
بایگانی 7z با ورودی های متعدد ایجاد کنید
در این حالت می توانید فایل ها را در یک پوشه قرار دهید و مسیر پوشه را به روش SevenZipArchive.CreateEntries() منتقل کنید. مراحل زیر برای افزودن چندین ورودی فایل به آرشیو 7z آمده است.
- یک نمونه از کلاس SevenZipArchive ایجاد کنید.
- مسیر پوشه را به روش SevenZipArchive.CreateEntries(String, Boolean) منتقل کنید.
- روش SevenZipArchive.Save(String) را فراخوانی کنید.
نمونه کد زیر نحوه ایجاد یک آرشیو 7z با چندین ورودی با استفاده از سی شارپ را نشان می دهد.
using (SevenZipArchive archive = new SevenZipArchive())
{
archive.CreateEntries(dataDir);
archive.Save("SevenZip.7z");
}
با استفاده از C# یک آرشیو رمزگذاری شده 7z AES ایجاد کنید
فرمت 7z از رمزگذاری AES برای ایمن سازی فایل ها پشتیبانی می کند. برای رمزگذاری یک فایل 7z، از کلاس SevenZipAESEncryptionSettings استفاده می شود. نمونه کد زیر نحوه ایجاد یک آرشیو 7z رمزگذاری شده AES را با استفاده از 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");
}
گذرواژههای مختلف را برای ورودیهای 7z با استفاده از سی شارپ تنظیم کنید
فرمت 7z همچنین به شما این امکان را می دهد که برای هر ورودی یک رمز عبور متفاوت تعیین کنید. به عنوان مثال، اگر قصد دارید دو فایل را در یک بایگانی 7z فشرده کنید، می توانید رمز عبور متفاوتی برای هر فایل تعیین کنید. در زیر مراحل تنظیم رمزهای عبور مختلف برای ورودی های 7z آمده است.
- یک FileStream جدید برای فایل آرشیو 7z ایجاد کنید.
- با استفاده از کلاس FileInfo به هر ورودی فایل دسترسی پیدا کنید.
- یک نمونه از کلاس SevenZipArchive ایجاد کنید.
- با استفاده از [SevenZipArchive.CreateEntry(String، FileInfo، Boolean، SevenZipEntrySettings)] (https://reference.aspose.com/zip/net/aspose.zip.sevenzip/sevenziparchive/methods)/، ورودی به بایگانی 7z ایجاد کنید.
- بایگانی را با استفاده از روش SevenZipArchive.Save(Stream) ذخیره کنید.
نمونه کد زیر نحوه تنظیم رمز عبور برای هر ورودی در آرشیو 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);
}
}
نتیجه
در این مقاله یاد گرفتیم که چگونه با استفاده از سی شارپ آرشیو ۷z را به صورت برنامه نویسی ایجاد کنیم. علاوه بر این، نحوه ایجاد فایلهای 7z رمزگذاری شده AES و تعیین رمز عبور برای هر ورودی را دیدهایم. میتوانید درباره فشردهسازی/فشردهسازی فایلها از اینجا اطلاعات بیشتری کسب کنید.