Perpustakaan C# .NET untuk Format Fail Pemampatan
Open Source Free .NET API untuk format pengarkib fail seperti ZIP, GZIP, TAR & BZIP2.
Pustaka SharpZipLib ditulis sepenuhnya dalam C# untuk platform .NET. Ia dilaksanakan sebagai perhimpunan dan supaya anda boleh memasukkannya ke dalam projek lain (dalam mana-mana bahasa .NET).
Ia pada asalnya dialihkan daripada perpustakaan GNU Classpath java.util.zip supaya ia boleh digunakan dengan SharpDevelop, yang memerlukan pemampatan GZIP & ZIP. Kemudian disebabkan permintaan pengguna yang tinggi, pengarkiban BZIP2 dan Tar turut disertakan dalam pustaka.
Bermula dengan SharpZipLib
Anda perlu mempunyai .NET Framework 4.5 atau lebih tinggi untuk mengkonfigurasi SharpZipLib. Setelah anda memenuhi prasyarat, anda boleh memuat turun repositori secara manual daripada GitHub atau mengambil terus pemasangan daripada NuGet.
Cara yang disyorkan untuk memasang SharpZipLib adalah daripada NuGet kerana ia tersedia sebagai Pakej NuGet.
Pasang SharpZipLib daripada NuGet
Install-Package SharpZipLib
Perpustakaan NET untuk Mencipta & Mengekstrak Fail ZIP
SharpZipLib membolehkan pembangun perisian mencipta fail ZIP di dalam aplikasi .NET mereka sendiri. Pembangun boleh dengan mudah memampatkan semua fail yang tersedia di dalam direktori dan menetapkannya ke dalam satu fail zip. ZIP ialah salah satu format fail pemampatan yang paling popular dan memberikan kemudahan kepada pengguna untuk mengurangkan saiz fail. API juga menyokong mengekstrak kandungan fail ZIP ke tempat pilihan pengguna
Ekstrak fail dari 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);
}
}
}
Buat Fail ZIP Dilindungi Kata Laluan
SharpZipLib memberikan pembangun perisian keupayaan untuk memampatkan semua fail di dalam folder ke dalam fail ZIP dan menentukan kata laluan untuk fail yang dibuat. Jika anda ingin mencipta fail ZIP tanpa perlindungan, sila tetapkan nilainya kepada null atau jangan isytiharkan ia meninggalkan fail tanpa sebarang perlindungan kata laluan. Ia menyokong sejumlah besar fail.
Buat fail ZIP yang dilindungi kata laluan - 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();
}
}