کتابخانه C#.NET برای فرمت های فایل فشرده

API .NET رایگان منبع باز برای قالب‌های بایگانی فایل مانند ZIP، GZIP، TAR و BZIP2.

کتابخانه SharpZipLib به طور کامل در سی شارپ برای پلتفرم دات نت نوشته شده است. این به صورت اسمبلی پیاده سازی می شود و بنابراین می توانید آن را در پروژه های دیگر (به هر زبان دات نت) بگنجانید.

در اصل از کتابخانه GNU Classpath java.util.zip منتقل شده بود تا بتوان از آن با SharpDevelop استفاده کرد که به فشرده سازی GZIP و ZIP نیاز داشت. بعداً به دلیل تقاضای زیاد کاربران، بایگانی BZIP2 و Tar نیز در کتابخانه گنجانده شد.

Previous Next

شروع کار با SharpZipLib

برای پیکربندی SharpZipLib باید .NET Framework 4.5 یا بالاتر داشته باشید. هنگامی که پیش نیازها را برآورده کردید، می توانید مخزن را به صورت دستی از GitHub دانلود کنید یا اسمبلی را مستقیماً از NuGet واکشی کنید.

روش توصیه شده برای نصب SharpZipLib از NuGet است زیرا به عنوان بسته NuGet در دسترس است. 

SharpZipLib را از NuGet نصب کنید

 Install-Package SharpZipLib

کتابخانه NET برای ایجاد و استخراج فایل های ZIP

SharpZipLib توسعه دهندگان نرم افزار را قادر می سازد تا یک فایل ZIP در داخل برنامه های NET خود ایجاد کنند. توسعه دهندگان به راحتی می توانند تمام فایل های موجود در یک فهرست را فشرده کرده و آنها را به یک فایل فشرده اختصاص دهند. ZIP یکی از محبوب ترین فرمت های فایل فشرده است و به کاربران امکان کاهش حجم فایل ها را می دهد. API همچنین از استخراج محتوای فایل‌های 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);
    }
  }
}

یک فایل ZIP محافظت شده با رمز عبور ایجاد کنید

SharpZipLib به توسعه دهندگان نرم افزار این امکان را می دهد که تمام فایل های داخل یک پوشه را در یک فایل ZIP فشرده کرده و برای فایل های ایجاد شده رمز عبور تعریف کنند. اگر می‌خواهید فایل‌های ZIP بدون محافظت ایجاد کنید، لطفاً مقدار آن را null کنید یا آن را اعلام نکنید تا فایل بدون محافظت از رمز عبور باقی بماند. از تعداد زیادی فایل پشتیبانی می کند.

ایجاد یک فایل 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();
  }
}
 فارسی