Create ZIP in C#

مقدمة في أرشيفات ZIP

ZIP أرشيفات تُعد ضرورية لضغط وتوحيد ملفات أو مجلدات متعددة في حاوية واحدة. لا يقلل هذا التنسيق من حجم الملف للتخزين والنقل فحسب، بل يحافظ أيضًا على البيانات الوصفية، مما يبسط إدارة الملفات. أرشيفات ZIP تُستخدم على نطاق واسع في كل من تطبيقات سطح المكتب والويب للمهام مثل الرفع، التنزيل، المشاركة، وتأمين الملفات عبر التشفير.

في هذه المقالة، سنستعرض طرقًا مختلفة لـ إنشاء أرشيفات ZIP برمجيًا باستخدام C#. في النهاية، ستعرف كيف تقوم بـ:

مكتبة C# ZIP

الـ Aspose.ZIP for .NET هو API قوي مخصص لضغط وفك ضغط الملفات والمجلدات داخل تطبيقات .NET. يتميز بتشفير AES لتأمين ملفاتك داخل أرشيفات ZIP. يمكنك بسهولة تثبيت الـ API من NuGet أو تنزيل الملفات الثنائية من التنزيلات القسم.

إنشاء أرشيف ZIP في C#

لضغط ملف إلى أرشيف ZIP، اتبع الخطوات التالية:

  1. إنشاء FileStream كائن لإخراج أرشيف ZIP.
  2. افتح ملف المصدر باستخدام FileStream كائن.
  3. إنشاء نسخة من الأرشيف الفئة.
  4. أضف الملف إلى الأرشيف باستخدام Archive.CreateEntry(string, FileStream) الطريقة.
  5. احفظ أرشيف ZIP باستخدام الـ Archive.Save(FileStream) طريقة.

فيما يلي عينة من الشيفرة توضح كيفية إضافة ملف إلى أرشيف ZIP باستخدام C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

إضافة ملفات متعددة إلى أرشيف ZIP في C#

لإضافة ملفات متعددة إلى أرشيف ZIP، يمكنك الاختيار من الطرق التالية:

استخدام FileStream

استخدم FileStream الفئة إلى ضغط الملفات في C# عن طريق إضافة ملفات متعددة إلى أرشيف ZIP باستخدام Archive.CreateEntry(String, FileStream) طريقة. إليك كيف:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

استخدام FileInfo

بدلاً من ذلك، استخدم FileInfo الفئة لإضافة الملفات. هذه الطريقة تقوم بتحميل الملفات باستخدام FileInfo الفئة وتضيفها إلى أرشيف ZIP باستخدام Archive.CreateEntry(String, FileInfo) طريقة. راجع المثال أدناه:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

استخدام مسار الملف

يمكنك أيضًا إضافة الملفات مباشرةً عن طريق توفير مساراتها إلى Archive.CreateEntry(String name, String path, Boolean openImmediately, ArchiveEntrySettings newEntrySettings) الطريقة. إليك كيفية إنشاء ملف ZIP في C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

إضافة مجلدات إلى أرشيف ZIP في C#

إضافة مجلد إلى أرشيف ZIP طريقة مريحة لتضمين ملفات متعددة. لل ضغط الملفات في C#,، اتبع الخطوات التالية:

  1. إنشاء FileStream كائن لأرشيف ZIP الناتج.
  2. إنشاء نسخة من الأرشيف class.
  3. استخدم DirectoryInfo class لتحديد المجلد الذي سيتم ضغطه.
  4. أضف المجلد إلى ZIP باستخدام Archive.CreateEntries(DirectoryInfo) method.
  5. احفظ أرشيف ZIP باستخدام Archive.Save(FileStream) method.

فيما يلي عينة من الشيفرة توضح كيفية إضافة مجلد إلى أرشيف ZIP في C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

إنشاء أرشيف ZIP محمي بكلمة مرور باستخدام ZipCrypto في C#

لتحسين الأمان، يمكنك إنشاء أرشيفات ZIP محمية بكلمة مرور باستخدام ZipCrypto التشفير. يتم ذلك باستخدام ArchiveEntrySettings class في مُنشئ أرشيف,، والتي تتيح لك تحديد نوع التشفير.

فيما يلي مثال على كيفية إنشاء أرشيف ZIP محمي بكلمة مرور باستخدام ZipCrypto في C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

إنشاء ZIP محمي بكلمة مرور باستخدام تشفير AES

المكتبة Aspose.ZIP لـ .NET تدعم أيضًا تشفير AES لتأمين أرشيفات ZIP. يمكنك الاختيار من طرق تشفير AES التالية:

  • AES128
  • AES192
  • AES256

لتطبيق تشفير AES، استخدم AesEcryptionSettings الفئة. إليك كيفية إنشاء ZIP محمي بكلمة مرور باستخدام تشفير AES في C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

تعيين وضع الضغط المتوازي

في الحالات التي تتضمن إدخالات متعددة، قم بتكوين API للضغط المتوازي باستخدام الـ ParallelOptions الفئة. Aspose.ZIP لـ .NET يوفر عدة أوضاع للضغط المتوازي:

  • أبدًا - لا تقم بالضغط بشكل متوازي.
  • دائمًا - اضغط دائمًا بشكل متوازي (كن حذرًا من مشكلات نفاد الذاكرة).
  • تلقائي - قرر تلقائيًا ما إذا كان يجب استخدام الضغط المتوازي بناءً على الإدخالات.

إليك مثال يوضح كيفية ضبط وضع الضغط المتوازي أثناء ضغط عدة ملفات:

using Aspose.Zip;
using Aspose.Zip.Saving;
// For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
string dataDir = "";
using (FileStream zipFile = File.Open(dataDir + "UsingParallelismToCompressFiles_out.zip", FileMode.Create))
{
    using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
    {
        using (FileStream source2 = File.Open(dataDir + "asyoulik.txt", FileMode.Open, FileAccess.Read))
        {
            using (var archive = new Archive())
            {
                archive.CreateEntry("alice29.txt", source1);
                archive.CreateEntry("asyoulik.txt", source2);
                //Define the parallelism criterion
                var parallelOptions = new Aspose.Zip.Saving.ParallelOptions
                {
                    ParallelCompressInMemory = ParallelCompressionMode.Always
                };
                archive.Save(zipFile,
                    new ArchiveSaveOptions()
                    {
                        ParallelOptions = parallelOptions,
                        Encoding = Encoding.ASCII,
                        ArchiveComment = "There are two poems from Canterbury corpus"
                    });
            }
        }
    }
}

تعرف على المزيد حول مكتبة C# .NET ZIP

تعمق أكثر في واجهة برمجة التطبيقات C# .NET ZIP الخاصة بنا من خلال الموارد التالية:

جرّب أرشيفات ZIP عبر الإنترنت

استكشف تطبيق مجاني عبر الإنترنت, استنادًا إلى Aspose.ZIP لـ .NET, لضغط الملفات إلى أرشيفات ZIP بسهولة.

الخلاصة

في هذه المقالة، تعلمت كيف إنشاء أرشيفات ZIP برمجيًا في C#. توضح عينات الشيفرة المقدمة كيفية ضغط الملفات في C#، وإضافة ملفات ومجلدات إلى أرشيفات ZIP، وإنشاء أرشيفات ZIP محمية بكلمة مرور باستخدام كل من طرق تشفير ZipCrypto و AES. كما ناقشنا الضغط المتوازي للتعامل بكفاءة مع الملفات الكبيرة وحتى تطرقنا إلى كيفية ضغط الملفات في .NET باستخدام C#. إذا كان لديك أي أسئلة أو تحتاج إلى مزيد من المساعدة، لا تتردد في التواصل معنا عبر منتدى.

انظر أيضًا

فك ضغط Unrar أو استخراج الملفات باستخدام C#فك ضغط الملفات في أرشيفات ZIP باستخدام C#إنشاء أرشيفات 7z (7-Zip) في C# .NET
فتح أو استخراج ملف 7z (7zip) في C# .NETإنشاء واستخراج أرشيفات GZip باستخدام C#تحويل ملفات RAR إلى أرشيف ZIP في C#
تحويل أرشيفات ZIP إلى TAR في C#إنشاء أرشيف ZIP مسطح في C#إنشاء أرشيف تنفيذي ذاتي الاستخراج في C#
إنشاء ملفات TAR.GZ و TAR.XZ في C#حذف الملفات في أرشيف ZIP باستخدام C#استخراج أرشيفات ZIP المتداخلة في C#
دمج عدة أرشيفات ZIP أو TAR في C#كيفية إنشاء ملفات ZIPاستخراج 7z عبر الإنترنت

More in this category