إنشاء ZIP في C#

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

في هذه المقالة ، سوف تتعلم كيفية إجراء عمليات الأرشفة ZIP التالية:

مكتبة C# ZIP

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

إنشاء أرشيف مضغوط في C#

فيما يلي خطوات ضغط ملف عن طريق إضافته إلى أرشيف ZIP:

يوضح نموذج التعليمات البرمجية التالي كيفية إضافة ملف إلى أرشيف مضغوط باستخدام C#.

// قم بإنشاء FileStream لأرشيف ZIP الناتج
using (FileStream zipFile = File.Open("compressed_file.zip", FileMode.Create))
{
	// الملف المراد إضافته إلى الأرشيف
	using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
	{
		using (var archive = new Archive(new ArchiveEntrySettings()))
		{
			// أضف ملفًا إلى الأرشيف
			archive.CreateEntry("alice29.txt", source1);
			// ملف مضغوط
			archive.Save(zipFile);
		}
	}
}

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

في حالة رغبتك في إضافة ملفات متعددة إلى أرشيف ZIP ، يمكنك القيام بذلك باستخدام إحدى الطرق التالية.

C# ZIP ملفات متعددة باستخدام FileStream

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

// قم بإنشاء FileStream لأرشيف ZIP الناتج
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
	// الملف المراد إضافته إلى الأرشيف
	using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
	{
		// الملف المراد إضافته إلى الأرشيف
		using (FileStream source2 = File.Open("asyoulike.txt", FileMode.Open, FileAccess.Read))
		{
			using (var archive = new Archive())
			{
				// أضف ملفات إلى الأرشيف
				archive.CreateEntry("alice29.txt", source1);
				archive.CreateEntry("asyoulik3.txt", source2);
				// ZIP الملفات
				archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "two files are compressed in this archive" });
			}
		}
	}
}

C# ZIP ملفات متعددة باستخدام FileInfo

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

// قم بإنشاء FileStream لأرشيف ZIP الناتج
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
	// الملفات المراد إضافتها إلى الأرشيف
	FileInfo fi1 = new FileInfo("alice29.txt");
	FileInfo fi2 = new FileInfo("fields.c");

	using (var archive = new Archive())
	{
		// أضف ملفات إلى الأرشيف
		archive.CreateEntry("alice29.txt", fi1);
		archive.CreateEntry("fields.c", fi2);
		// إنشاء أرشيف مضغوط
		archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
	}
}

ملفات مضغوطة باستخدام المسار

بدلاً من استخدام فئات FileInfo أو FileStream لإدخالات ZIP ، يمكنك توفير مسار الملف مباشرةً إلى أسلوب Archive.CreateEntry (String name، String path، Boolean openImmediately، ArchiveEntrySettings newEntrySettings). يوضح نموذج التعليمات البرمجية التالي كيفية ملفات ZIP باستخدام مسارها.

// قم بإنشاء FileStream لأرشيف ZIP الناتج
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    // إنشاء أرشيف
    using (var archive = new Archive())
    {
        // أضف ملفًا إلى أرشيف ZIP
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(zipFile);
    }
}

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

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

يوضح نموذج التعليمات البرمجية التالي كيفية إضافة مجلد إلى ZIP في C#.

// قم بإنشاء FileStream لأرشيف ZIP الناتج
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive())
	{
		// المجلد المطلوب ضغطه
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// إنشاء أرشيف مضغوط
		archive.Save(zipFile);
	}
}

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

يمكنك حماية أرشيفات ZIP باستخدام كلمات المرور وتطبيق تشفير ZipCrypto. لهذا ، يتم استخدام فئة ArchiveEntrySettings في مُنشئ Archive الذي يقبل نوع التشفير كمعامل ثانٍ.

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

// قم بإنشاء FileStream لأرشيف ZIP الناتج
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
	{
		// أضف مجلدًا إلى الأرشيف
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// إنشاء أرشيف مضغوط
		archive.Save(zipFile);
	}
}

C# إنشاء ملف ZIP محمي بكلمة مرور مع تشفير AES

يتيح لك Aspose.ZIP for .NET تطبيق تشفير AES لحماية أرشيفات ZIP. يمكنك استخدام طرق تشفير AES التالية:

  • AES128
  • AES192
  • AES 256

من أجل تطبيق تشفير AES ، تقدم API فئة AesEcryptionSettings. يوضح نموذج التعليمات البرمجية التالي كيفية إنشاء ZIP محمي بكلمة مرور مع تشفير AES في C#.

// قم بإنشاء FileStream لأرشيف ZIP الناتج
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// أضف مجلدًا إلى الأرشيف
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// إنشاء أرشيف مضغوط
		archive.Save(zipFile);
	}
}

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

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

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

يوضح نموذج التعليمات البرمجية التالي كيفية تعيين وضع الضغط المتوازي أثناء ضغط ملفات متعددة باستخدام مكتبة Aspose’s C# ZIP.

// للحصول على أمثلة وملفات بيانات كاملة ، يرجى الانتقال إلى https://github.com/aspose-zip/Aspose.ZIP-for-.NET
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);
                //حدد معيار التوازي
                var parallelOptions = new 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# ZIP API باستخدام الموارد التالية:

استنتاج

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

أنظر أيضا

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