Bibliothèque C# .NET pour les formats de fichiers de compression
API .NET gratuite Open Source pour les formats d'archivage de fichiers tels que ZIP, GZIP, TAR et BZIP2.
La bibliothèque SharpZipLib est entièrement écrite en C# pour la plate-forme .NET. Il est implémenté en tant qu'assemblage et vous pouvez donc l'incorporer dans d'autres projets (dans n'importe quel langage .NET).
Il a été porté à l'origine à partir de la bibliothèque GNU Classpath java.util.zip afin de pouvoir être utilisé avec SharpDevelop, qui nécessitait une compression GZIP et ZIP. Plus tard, en raison de la forte demande des utilisateurs, l'archivage BZIP2 et Tar ont également été inclus dans la bibliothèque.
Premiers pas avec SharpZipLib
Vous devez avoir .NET Framework 4.5 ou supérieur pour configurer SharpZipLib. Une fois que vous avez rempli les conditions préalables, vous pouvez télécharger manuellement le référentiel à partir de GitHub ou récupérer directement l'assembly à partir de NuGet.
La méthode recommandée pour installer SharpZipLib est à partir de NuGet car il est disponible en tant que Paquet NuGet.
Installer SharpZipLib à partir de NuGet
Install-Package SharpZipLib
NET Library pour créer et extraire des fichiers ZIP
SharpZipLib permet aux développeurs de logiciels de créer un fichier ZIP dans leurs propres applications .NET. Les développeurs peuvent facilement compresser tous les fichiers disponibles dans un répertoire et les affecter dans un seul fichier zip. ZIP est l'un des formats de fichiers de compression les plus populaires et donne aux utilisateurs la possibilité de réduire la taille des fichiers. L'API prend également en charge l'extraction du contenu des fichiers ZIP vers un emplacement choisi par l'utilisateur.
Extraire des fichiers de 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);
}
}
}
Créer un fichier ZIP protégé par mot de passe
SharpZipLib donne aux développeurs de logiciels la possibilité de compresser tous les fichiers d'un dossier dans un fichier ZIP et de définir un mot de passe pour les fichiers créés. Si vous souhaitez créer des fichiers ZIP sans protection, définissez sa valeur sur null ou ne le déclarez pas pour laisser le fichier sans aucune protection par mot de passe. Il prend en charge un grand nombre de fichiers.
Créer un fichier ZIP protégé par mot de passe - 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();
}
}