العمل مع أرشيفات ZIP في C# (.NET): دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع أرشيفات ZIP في C# (.NET): الإنشاء والقراءة والإدارة



في التطبيقات الحديثة، غالبًا ما تكون هناك حاجة لضغط الملفات لتوفير المساحة أو سهولة النقل. توفر منصة .NET أدوات قوية وسهلة للعمل مع أرشيفات ZIP مباشرة من الصندوق. باستخدام مساحة الأسماء System.IO.Compression، يمكنك بسهولة إنشاء واستخراج وتعديل الأرشيفات دون تثبيت مكتبات خارجية. في هذه المقالة، سنشرح بالتفصيل جميع العمليات الأساسية.



تضمين مساحات الأسماء الضرورية

للبدء، تأكد من إضافة التوجيهات التالية في مشروعك:

using System;using System.IO;using System.IO.Compression;using System.Linq;


إنشاء أرشيف ZIP

أبسط طريقة لإنشاء أرشيف هي استخدام الفئة ZipFile. وهي متاحة بدءًا من .NET Framework 4.5 و .NET Core.



إنشاء أرشيف من مجلد واحد

string sourceDirectory = @"C:\\MyDocuments";string zipFilePath = @"C:\\MyArchive.zip";

// إنشاء أرشيف من جميع الملفات في المجلد المحددZipFile.CreateFromDirectory(sourceDirectory, zipFilePath);Console.WriteLine("تم إنشاء الأرشيف: " + zipFilePath);


إنشاء أرشيف مع معلمات إضافية

يمكنك تحديد مستوى الضغط وإضافة بادئة مسار داخل الأرشيف:

string sourceDir = @"C:\\Data";string outputZip = @"C:\\Data.zip";

// CompressionLevel.Optimal - أقصى ضغط// includeBaseDirectory: true - سيحافظ على هيكل المجلداتZipFile.CreateFromDirectory( sourceDir, outputZip, CompressionLevel.Optimal, includeBaseDirectory: true);Console.WriteLine("تم إنشاء الأرشيف مع التحسين.");


استخراج الملفات من الأرشيف

فك ضغط الأرشيف بأكمله إلى مجلد

string zipPath = @"C:\\MyArchive.zip";string extractPath = @"C:\\ExtractedFiles";

// فك ضغط جميع المحتوياتZipFile.ExtractToDirectory(zipPath, extractPath);Console.WriteLine("تم فك ضغط الأرشيف بنجاح.");


فك الضغط مع استبدال الملفات الموجودة

// في .NET 6+ يمكنك تحديد الاستبدالZipFile.ExtractToDirectory(zipPath, extractPath, overwriteFiles: true);


العمل مع الإدخالات الفردية في الأرشيف

توفر الفئة ZipArchive تحكمًا كاملاً في محتويات الأرشيف.



قراءة قائمة الملفات في الأرشيف

using (ZipArchive archive = ZipFile.OpenRead(@"C:\\Archive.zip")){    foreach (ZipArchiveEntry entry in archive.Entries)    {        Console.WriteLine($"الملف: {entry.FullName}, الحجم: {entry.Length} بايت");    }}


استخراج ملف معين من الأرشيف

string zipFilePath = @"C:\\Archive.zip";string entryName = @"folder\\document.txt"; // المسار داخل الأرشيفstring outputPath = @"C:\\Output\\document.txt";

using (ZipArchive archive = ZipFile.OpenRead(zipFilePath)){ ZipArchiveEntry entry = archive.GetEntry(entryName); if (entry != null) { // استخراج الملف entry.ExtractToFile(outputPath, overwrite: true); Console.WriteLine($"تم استخراج الملف '{entryName}'."); } else { Console.WriteLine("الملف غير موجود في الأرشيف."); }}


إضافة وحذف الملفات من أرشيف موجود

لتعديل أرشيف موجود، افتحه في وضع ZipArchiveMode.Update:



إضافة ملف جديد إلى الأرشيف

string existingZip = @"C:\\Archive.zip";string fileToAdd = @"C:\\NewFile.txt";

using (ZipArchive archive = ZipFile.Open(existingZip, ZipArchiveMode.Update)){ // إضافة ملف باسم "NewFile.txt" إلى جذر الأرشيف archive.CreateEntryFromFile(fileToAdd, "NewFile.txt"); Console.WriteLine("تمت إضافة الملف إلى الأرشيف.");}


حذف ملف من الأرشيف

using (ZipArchive archive                    

توصيات