Zum Fußzeileninhalt springen
.NET HILFE

SevenZip C# (So funktioniert es für Entwickler)

In the domain of file entry compression and archiving utilities, 7-Zip stands out as a versatile, open-source solution. Renowned for its high compression ratios and support for various archive formats, 7-Zip has become a popular choice for users seeking efficient file management. In this article, we will explore what 7-Zip is, how it works, its main features, the unique 7z format, compression ratios, and its .NET SDK for C# that helps in creating 7z archives. Additionally, we'll introduce IronZIP as an alternative solution in the .NET ecosystem.

What is 7-Zip?

7-Zip is a free and open-source file archiver utility that allows users to compress and decompress files. Developed by Igor Pavlov, 7-Zip supports a wide range of compression formats, making it a versatile tool for managing and organizing data.

Sevenzip C# (How It Works For Developers) Figure 1 - 7-Zip

Main Features

  • High Compression Ratio: One of the key features of 7-Zip is its ability to achieve high compression ratios, often surpassing other archiving tools. This can result in significant savings in terms of storage space and faster file transfers to a folder.
  • Wide Format Support: 7-Zip can handle a variety of archive formats, including 7z, ZIP, TAR, GZIP, and more. This versatility ensures compatibility with different operating systems and software.
  • Encryption and Security: 7-Zip provides strong encryption capabilities, allowing users to secure their archives with AES-256 encryption. This ensures that sensitive data remains protected.
  • Command-Line Support: In addition to its user-friendly graphical interface, 7-Zip offers a command-line version for users who prefer automation and scripting in their file management tasks.

How It Works

7-Zip utilizes advanced compression algorithms to reduce the size of files and folders. It employs the LZMA (Lempel-Ziv-Markov chain-Algorithm) compression algorithm for its native 7z format, which contributes to its impressive compression ratios. The utility also supports other common formats such as ZIP, TAR, and GZIP.

7z Format

The 7z format is the proprietary format used by 7-Zip for its archives. It employs the LZMA compression algorithm, which is known for its excellent compression ratios. The 7z format supports features such as solid compression, file splitting, and self-extracting archives.

Compression Ratio

7-Zip is renowned for its outstanding compression ratios, especially when using the 7z format with the LZMA algorithm. This efficiency results in smaller archive sizes without compromising the integrity of the compressed files. Files created by 7-Zip are compressed 30-70% better than the normal ZIP format.

7-Zip LZMA SDK for C#

For developers working in C#, 7-Zip provides a .NET SDK that enables seamless integration of 7-Zip functionality into custom applications. The SDK allows developers to perform compression and decompression operations programmatically, providing flexibility in managing archived files within C# projects.

If you want to use 7-Zip in a C# application, you can make use of the 7-Zip SDK or utilize the command-line executable in your C# code. Here's a brief overview of both approaches.

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

The 7-Zip SDK includes the 7z.dll library, which you can use in your C# project. This approach allows you to perform compression and decompression operations programmatically.

Here's the source code example using the 7-Zip SDK:

using SevenZip;

class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");

        // 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 files to the 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");

        // 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 files to the 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")

		' 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 files to the archive
			compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Make sure to replace "path_to_7z.dll" with the actual path to the 7z.dll library. You can find the 7z.dll file in the 7-Zip installation directory.

2. Command-Line Executable

Alternatively, you can use the 7-Zip command-line executable (7z.exe) in your C# source code by invoking it through the System.Diagnostics.Process class.

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

Ensure that "7z.exe" is in your system's PATH or provide the full path to the executable in the FileName property.

Introducing IronZIP

While 7-Zip is a robust solution, developers exploring alternatives within the .NET ecosystem may find IronZIP to be a compelling choice. IronZIP is a .NET compression library that offers features similar to 7-Zip, providing developers with the tools to compress, decompress, and manipulate archives within their C# applications.

Sevenzip C# (How It Works For Developers) Figure 2 - IronZIP

IronZIP is a powerful C# ZIP archive library that simplifies working with ZIP files in .NET applications. With its user-friendly API, developers can efficiently create, read, and extract ZIP archives with IronZIP. Here's a simple code snippet showcasing the ease of creating a ZIP archive using 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

For more information on IronZIP and its capabilities or code examples, please visit the IronZIP documentation page.

Conclusion

7-Zip continues to be a dominant force in the world of file compression, offering users an open-source, feature-rich solution with exceptional compression ratios. Its support for various archive formats and strong encryption capabilities make it a versatile choice for both casual users and developers alike. The .NET SDK further extends its utility to C# developers, facilitating seamless integration into custom applications. For those seeking an alternative in the .NET space, IronZIP stands out as a noteworthy contender, offering similar functionality tailored to the specific needs of C# developers.

IronZIP offers a free trial for IronZIP. Download and try the IronZIP .NET Core and Framework library from the IronZIP download page.

Häufig gestellte Fragen

Was ist 7-Zip und warum ist es beliebt?

7-Zip ist ein Open-Source-Dateikomprimierungswerkzeug, das für seine hohen Kompressionsraten und Unterstützung für mehrere Archivformate wie 7z, ZIP, TAR und GZIP bekannt ist. Es ist aufgrund seiner Effizienz in der Datenverwaltung und der starken AES-256-Verschlüsselung zur Sicherheit beliebt.

Wie unterscheidet sich das 7z-Format von anderen Formaten?

Das 7z-Format verwendet den LZMA-Komprimierungsalgorithmus, der eine überlegene Kompressionseffizienz bietet und typischerweise 30-70% bessere Kompression als Standard-ZIP-Formate erreicht. Dies macht es ideal für Benutzer, die die Dateigrößenreduzierung priorisieren.

Wie können Entwickler 7-Zip in C#-Projekten verwenden?

Entwickler können das 7-Zip .NET SDK nutzen, das die 7z.dll-Bibliothek enthält, um Programm-Komprimierungs- und -Dekomprimierungsfunktionen in C#-Anwendungen zu integrieren. Alternativ kann das 7z.exe-Befehlszeilentool zur Verwaltung von Archiven verwendet werden.

Welche Vorteile bietet IronZIP für .NET-Anwendungen?

IronZIP bietet eine benutzerfreundliche API für .NET-Anwendungen, die das Erstellen, Lesen und Extrahieren von ZIP-Dateien vereinfacht. Es ist eine brauchbare Alternative für Entwickler, die Benutzerfreundlichkeit und leistungsfähige ZIP-Dateiverwaltungsfähigkeiten in C#-Projekten suchen.

Kann ich 7-Zip zum Verschlüsseln von Dateien verwenden?

Ja, 7-Zip bietet starke Verschlüsselungsmöglichkeiten mit AES-256, sodass Benutzer Dateien sicher verschlüsseln und vertrauliche Daten während der Komprimierung schützen können.

Gibt es eine Testversion von IronZIP?

Ja, IronZIP bietet eine kostenlose Testversion, die von ihrer Website heruntergeladen werden kann. Diese Testversion ermöglicht es Entwicklern, ihre Funktionen zu erkunden und ZIP-Dateiverwaltung in .NET-Anwendungen zu integrieren.

Was sind die Hauptmerkmale von 7-Zip?

Die Funktionen von 7-Zip umfassen hohe Kompressionsraten, Unterstützung für eine Vielzahl von Formaten, starke AES-256-Verschlüsselung und sowohl eine benutzerfreundliche Oberfläche als auch Befehlszeilenunterstützung für unterschiedliche Benutzerbedürfnisse.

Wie kann ich Dateiarchivierung in einer C#-Anwendung verwenden?

Sie können Dateiarchivierung in C#-Anwendungen verwenden, indem Sie Bibliotheken wie das 7-Zip SDK mit der 7z.dll oder IronZIP verwenden, die beide umfassende Werkzeuge zum Umgang mit Dateikompression und -extraktion bieten.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen