کتابخانه C#.NET برای فرمت های فایل فشرده
API .NET رایگان منبع باز برای قالبهای بایگانی فایل مانند ZIP، GZIP، TAR و BZIP2.
کتابخانه SharpZipLib به طور کامل در سی شارپ برای پلتفرم دات نت نوشته شده است. این به صورت اسمبلی پیاده سازی می شود و بنابراین می توانید آن را در پروژه های دیگر (به هر زبان دات نت) بگنجانید.
در اصل از کتابخانه GNU Classpath java.util.zip منتقل شده بود تا بتوان از آن با SharpDevelop استفاده کرد که به فشرده سازی GZIP و ZIP نیاز داشت. بعداً به دلیل تقاضای زیاد کاربران، بایگانی BZIP2 و Tar نیز در کتابخانه گنجانده شد.
شروع کار با 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();
}
}