مكتبة C # .NET لضغط تنسيقات الملفات
Open Source Free .NET API لتنسيقات أرشيف الملفات مثل ZIP و GZIP و TAR & BZIP2.
مكتبة SharpZipLib مكتوبة بالكامل بلغة C # لمنصة .NET. يتم تنفيذه كتجميع وبالتالي يمكنك دمجه في مشاريع أخرى (بأي لغة من لغات .NET).
تم نقله في الأصل من مكتبة GNU Classpath java.util.zip بحيث يمكن استخدامه مع SharpDevelop ، والذي يحتاج إلى ضغط GZIP و ZIP. لاحقًا ، نظرًا لارتفاع طلب المستخدمين ، تم أيضًا تضمين أرشيف BZIP2 و Tar في المكتبة.
الشروع في العمل مع SharpZipLib
يجب أن يكون لديك .NET Framework 4.5 أو أعلى لتكوين SharpZipLib. بمجرد استيفاء المتطلبات الأساسية ، يمكنك تنزيل المستودع يدويًا من GitHub أو جلب التجميع مباشرة من NuGet.
الطريقة الموصى بها لتثبيت SharpZipLib هي من NuGet لأنها متوفرة في حزمة NuGet .
قم بتثبيت SharpZipLib من NuGet
Install-Package SharpZipLib
NET Library لإنشاء واستخراج ملفات ZIP
يتيح SharpZipLib لمطوري البرامج إنشاء ملف مضغوط داخل تطبيقات .NET الخاصة بهم. يمكن للمطورين ضغط جميع الملفات المتاحة داخل دليل بسهولة وتعيينها في ملف مضغوط واحد. يعد ZIP أحد أكثر تنسيقات ملفات الضغط شيوعًا ويمنح المستخدمين إمكانية تقليل حجم الملفات. تدعم واجهة برمجة التطبيقات أيضًا استخراج محتوى ملفات ZIP إلى مكان يختاره المستخدم
استخراج الملفات من ZIP - C #
// Open zip file
using (Stream fsInput = File.OpenRead("D:\\input.zip"))
using (var zf = new ZipFile(fsInput))
{
// Set password if required
zf.Password = "12345";
// Unzip data
foreach (ZipEntry zipEntry in zf)
{
if (!zipEntry.IsFile)
{
// Ignore directories
continue;
}
String entryFileName = zipEntry.Name;
var directoryName = "D:\\output\\test";
if (directoryName.Length > 0)
{
Directory.CreateDirectory(directoryName);
}
var buffer = new byte[4096];
using (var zipStream = zf.GetInputStream(zipEntry))
using (Stream fsOutput = File.Create("data.zip"))
{
StreamUtils.Copy(zipStream, fsOutput, buffer);
}
}
}
قم بإنشاء ملف مضغوط محمي بكلمة مرور
يمنح SharpZipLib مطوري البرامج القدرة على ضغط جميع الملفات الموجودة داخل مجلد في ملف ZIP وتحديد كلمة مرور للملفات التي تم إنشاؤها. إذا كنت ترغب في إنشاء ملفات مضغوطة بدون حماية ، فيرجى تعيين قيمتها على "لاغية" أو عدم إعلان ترك الملف بدون أي حماية بكلمة مرور. وهو يدعم عددًا كبيرًا من الملفات.
إنشاء ملف مضغوط محمي بكلمة مرور - C #
// Create a new ZIP file
using (FileStream fsOut = File.Create("D:\\output.zip"))
using (var zipStream = new ZipOutputStream(fsOut))
{
//0-9, 9 being the highest level of compression
zipStream.SetLevel(3);
// Set password
zipStream.Password = "12345";
// Add files
var files = Directory.GetFiles("D:\\sample");
foreach (var filename in files)
{
var fi = new FileInfo(filename);
// Make the name in zip based on the folder
var entryName = filename.Substring(1);
// Remove drive from name and fixe slash direction
entryName = ZipEntry.CleanName(entryName);
var newEntry = new ZipEntry(entryName);
// Note the zip format stores 2 second granularity
newEntry.DateTime = fi.LastWriteTime;
newEntry.Size = fi.Length;
zipStream.PutNextEntry(newEntry);
var buffer = new byte[4096];
using (FileStream fsInput = File.OpenRead(filename))
{
StreamUtils.Copy(fsInput, zipStream, buffer);
}
zipStream.CloseEntry();
}
}