AIDE .NET

SevenZip C# (Comment ça marche pour les développeurs)

Chaknith Bin
Chaknith Bin
décembre 24, 2023
Partager:

Introduction

Dans le domaine des utilitaires de compression et d'archivage des entrées de fichiers, 7-Zip s'impose comme une solution polyvalente et open-source. Réputé pour ses taux de compression élevés et sa prise en charge de divers formats d'archives, SevenZip est devenu un choix populaire pour les utilisateurs à la recherche d'une gestion efficace des fichiers. Dans cet article, nous explorerons ce qu'est 7-Zip, comment il fonctionne, ses principales caractéristiques, le format unique 7z, les taux de compression, et son SDK .NET pour C# qui aide à créer des archives 7z. En outre, nous présenterons IronZIP comme une solution alternative dans l'écosystème .NET.

Qu'est-ce que SevenZip ?

SevenZip ou 7-Zip est un utilitaire d'archivage de fichiers gratuit et open-source qui permet aux utilisateurs de compresser et de décompresser des fichiers. Développé par Igor Pavlov, 7-Zip prend en charge un large éventail de formats de compression, ce qui en fait un outil polyvalent pour la gestion et l'organisation des données.

Sevenzip C# (Comment ça fonctionne pour les développeurs) Figure 1 - 7-Zip

Caractéristiques principales

  • Ratio de compression élevé : L'un des principaux atouts de 7-Zip est sa capacité à atteindre des ratios de compression élevés, dépassant souvent d'autres outils d'archivage. Cela peut se traduire par des économies significatives en termes d'espace de stockage et par des transferts de fichiers plus rapides vers un dossier.
  • Large prise en charge des formats : 7-Zip peut gérer une variété de formats d'archives, y compris 7z, ZIP, TAR, GZIP, et plus encore. Cette polyvalence garantit la compatibilité avec différents systèmes d'exploitation et logiciels.
  • Cryptage et sécurité : 7-Zip offre de solides capacités de cryptage, permettant aux utilisateurs de sécuriser leurs archives avec le cryptage AES-256. Les données sensibles restent ainsi protégées.
  • Prise en charge de la ligne de commande : En plus de son interface graphique conviviale, 7-Zip offre une version en ligne de commande pour les utilisateurs qui préfèrent l'automatisation et les scripts dans leurs tâches de gestion de fichiers.

Comment ça marche

7-Zip utilise des algorithmes de compression avancés pour réduire la taille des fichiers et des dossiers. Il utilise l'algorithme de compression LZMA (Lempel-Ziv-Markov chain-Algorithm) pour son format natif 7z, ce qui contribue à ses taux de compression impressionnants. L'utilitaire prend également en charge d'autres formats courants tels que ZIP, TAR et GZIP.

format 7z

Le format 7z est le format propriétaire utilisé par 7-Zip pour ses archives. Il utilise l'algorithme de compression LZMA, connu pour ses excellents taux de compression. Le format 7z prend en charge des fonctions telles que la compression solide, le fractionnement des fichiers et les archives auto-extractibles.

Taux de compression

7-Zip est réputé pour ses taux de compression exceptionnels, en particulier lorsqu'il utilise le format 7z avec l'algorithme LZMA. Cette efficacité permet de réduire la taille des archives sans compromettre l'intégrité des fichiers compressés. Les fichiers créés par 7-Zip sont compressés 30 à 70 % plus efficacement que le format ZIP normal.

7-Zip LZMA SDK pour C# ;

Pour les développeurs travaillant en C#, 7-Zip fournit un SDK .NET qui permet une intégration transparente des fonctionnalités de 7-Zip dans les applications personnalisées. Le SDK permet aux développeurs d'effectuer des opérations de compression et de décompression par programmation, ce qui offre une grande souplesse dans la gestion des fichiers archivés au sein des projets C#.

Si vous souhaitez utiliser 7-Zip dans une application C#, vous pouvez utiliser le SDK 7-Zip ou utiliser l'exécutable en ligne de commande dans votre code C#. Voici un bref aperçu des deux approches

1. 7-Zip SDK (7z.dll)

Le SDK 7-Zip comprend la bibliothèque 7z.dll, que vous pouvez utiliser dans votre projet C#. Cette approche vous permet d'effectuer des opérations de compression et de décompression par programme.

Voici un exemple de code source utilisant le SDK 7-Zip :

using SevenZip;
class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");
        // Create a SevenZipExtractor or SevenZipCompressor instance
        // Perform compression or decompression operations as needed
        // Example: Extract files from an archive
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }
        // Example: Compress files into an archive
        using (var compressor = new SevenZipCompressor())
        {
        // Add File entry in archive
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
using SevenZip;
class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");
        // Create a SevenZipExtractor or SevenZipCompressor instance
        // Perform compression or decompression operations as needed
        // Example: Extract files from an archive
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }
        // Example: Compress files into an archive
        using (var compressor = new SevenZipCompressor())
        {
        // Add File entry in archive
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
Imports SevenZip
Friend Class Program
	Shared Sub Main()
		' Specify the path to the 7z.dll library
		SevenZipBase.SetLibraryPath("path_to_7z.dll")
		' Create a SevenZipExtractor or SevenZipCompressor instance
		' Perform compression or decompression operations as needed
		' Example: Extract files from an archive
		Using extractor = New SevenZipExtractor("archive.7z")
			extractor.ExtractArchive("output_directory")
		End Using
		' Example: Compress files into an archive
		Using compressor = New SevenZipCompressor()
		' Add File entry in archive
			compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Veillez à remplacer "path_to_7z.dll" par le chemin réel de la bibliothèque 7z.dll. Vous trouverez le fichier 7z.dll dans le répertoire d'installation de 7-Zip.

2. Exécutable en ligne de commande

Alternativement, vous pouvez utiliser l'exécutable en ligne de commande de 7-Zip (7z.exe) dans votre code source C# en l'invoquant via la classe System.Diagnostics.Process.

using System.Diagnostics;
class Program
{
    static void Main()
    {
        // Example: Extract files from an archive using the command-line executable
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
using System.Diagnostics;
class Program
{
    static void Main()
    {
        // Example: Extract files from an archive using the command-line executable
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
Imports System.Diagnostics
Friend Class Program
	Shared Sub Main()
		' Example: Extract files from an archive using the command-line executable
		Dim archivePath As String = "archive.7z"
		Dim outputPath As String = "output_directory"
		Dim processStartInfo As New ProcessStartInfo With {
			.FileName = "7z.exe",
			.Arguments = $"x ""{archivePath}"" -o""{outputPath}""",
			.RedirectStandardOutput = True,
			.UseShellExecute = False,
			.CreateNoWindow = True
		}
		Using process As New Process With {.StartInfo = processStartInfo}
			process.Start()
			process.WaitForExit()
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Assurez-vous que "7z.exe" est dans le chemin d'accès de votre système ou fournissez le chemin complet vers l'exécutable dans la propriété FileName.

Présentation d'IronZIP

Bien que 7-Zip soit une solution robuste, les développeurs explorant des alternatives au sein de l'écosystème .NET pourraient trouver IronZIP un choix convaincant. IronZIP est une bibliothèque de compression .NET qui offre des fonctionnalités similaires à 7-Zip, fournissant aux développeurs les outils pour compresser, décompresser et manipuler des archives dans leurs applications C#.

Sevenzip C# (Comment ça fonctionne pour les développeurs) Schéma 2 - IronZIP

IronZIP est une puissante bibliothèque d'archives ZIP C# qui simplifie l'utilisation des fichiers ZIP dans les applications .NET. Avec son API conviviale, les développeurs peuvent efficacement créer, lire et extraire des archives ZIP avec IronZIP. Voici un extrait de code simple montrant la facilité de créer une archive ZIP avec IronZIP :

using IronZip;
class Program
{
    static void Main()
    {
        // Specify the path for the new ZIP archive
        string zipFilePath = "output.zip";
        // Create an empty ZIP archive
        using (var archive = new IronArchive(zipFilePath))
        {
            // Add files to the ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }
        Console.WriteLine("ZIP archive created successfully!");
    }
}
using IronZip;
class Program
{
    static void Main()
    {
        // Specify the path for the new ZIP archive
        string zipFilePath = "output.zip";
        // Create an empty ZIP archive
        using (var archive = new IronArchive(zipFilePath))
        {
            // Add files to the ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }
        Console.WriteLine("ZIP archive created successfully!");
    }
}
Imports IronZip
Friend Class Program
	Shared Sub Main()
		' Specify the path for the new ZIP archive
		Dim zipFilePath As String = "output.zip"
		' Create an empty ZIP archive
		Using archive = New IronArchive(zipFilePath)
			' Add files to the ZIP
			archive.AddArchiveEntry("./assets/file1.txt")
			archive.AddArchiveEntry("./assets/file2.jpg")
			archive.AddArchiveEntry("./assets/file3.pdf")
		End Using
		Console.WriteLine("ZIP archive created successfully!")
	End Sub
End Class
$vbLabelText   $csharpLabel

Pour plus d'informations sur IronZIP et ses fonctionnalités ou pour des exemples de code, veuillez visiter la page de documentation d'IronZIP.

Conclusion

7-Zip continue d'être une force dominante dans le monde de la compression de fichiers, offrant aux utilisateurs une solution open-source riche en fonctionnalités avec des taux de compression exceptionnels. Sa prise en charge de divers formats d'archives et ses capacités de chiffrement élevées en font un choix polyvalent pour les utilisateurs occasionnels comme pour les développeurs. Le SDK .NET étend encore son utilité pour les développeurs C#, facilitant l'intégration transparente dans les applications personnalisées. Pour ceux qui recherchent une alternative dans l'espace .NET, IronZIP se distingue comme un concurrent digne d'intérêt, offrant des fonctionnalités similaires adaptées aux besoins spécifiques des développeurs C#.

IronZIP propose un essai gratuit pour IronZIP. Téléchargez et essayez la bibliothèque IronZIP .NET Core et Framework depuis la page de téléchargement d'IronZIP.

Chaknith Bin
Ingénieur logiciel
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.
< PRÉCÉDENT
Mailkit C# (Comment ça marche pour les développeurs)
SUIVANT >
ByteSize C# (Comment ça marche pour les développeurs)