
مقدمة في أرشيفات ZIP
ZIP أرشيفات تُعد ضرورية لضغط وتوحيد ملفات أو مجلدات متعددة في حاوية واحدة. لا يقلل هذا التنسيق من حجم الملف للتخزين والنقل فحسب، بل يحافظ أيضًا على البيانات الوصفية، مما يبسط إدارة الملفات. أرشيفات ZIP تُستخدم على نطاق واسع في كل من تطبيقات سطح المكتب والويب للمهام مثل الرفع، التنزيل، المشاركة، وتأمين الملفات عبر التشفير.
في هذه المقالة، سنستعرض طرقًا مختلفة لـ إنشاء أرشيفات ZIP برمجيًا باستخدام C#. في النهاية، ستعرف كيف تقوم بـ:
- إنشاء أرشيف ZIP باستخدام C#
- إضافة ملفات متعددة إلى أرشيف ZIP
- إضافة مجلدات إلى أرشيف ZIP
- إنشاء أرشيف ZIP محمي بكلمة مرور باستخدام ZipCrypto
- تشفير أرشيف ZIP باستخدام تشفير AES
- تعيين وضع الضغط المتوازي
- كيفية ضغط الملفات في .NET باستخدام C#
مكتبة C# ZIP
الـ Aspose.ZIP for .NET هو API قوي مخصص لضغط وفك ضغط الملفات والمجلدات داخل تطبيقات .NET. يتميز بتشفير AES لتأمين ملفاتك داخل أرشيفات ZIP. يمكنك بسهولة تثبيت الـ API من NuGet أو تنزيل الملفات الثنائية من التنزيلات القسم.
إنشاء أرشيف ZIP في C#
لضغط ملف إلى أرشيف ZIP، اتبع الخطوات التالية:
- إنشاء FileStream كائن لإخراج أرشيف ZIP.
- افتح ملف المصدر باستخدام FileStream كائن.
- إنشاء نسخة من الأرشيف الفئة.
- أضف الملف إلى الأرشيف باستخدام Archive.CreateEntry(string, FileStream) الطريقة.
- احفظ أرشيف 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#,، اتبع الخطوات التالية:
- إنشاء FileStream كائن لأرشيف ZIP الناتج.
- إنشاء نسخة من الأرشيف class.
- استخدم DirectoryInfo class لتحديد المجلد الذي سيتم ضغطه.
- أضف المجلد إلى ZIP باستخدام Archive.CreateEntries(DirectoryInfo) method.
- احفظ أرشيف 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#. إذا كان لديك أي أسئلة أو تحتاج إلى مزيد من المساعدة، لا تتردد في التواصل معنا عبر منتدى.