跳至页脚内容
.NET 帮助

SevenZip C#(开发者如何使用)

在文件条目压缩和归档实用程序领域,7-Zip 以其多功能的开源解决方案脱颖而出。 以其高压缩率和对多种归档格式的支持而闻名,7-Zip 已成为寻求高效文件管理的用户的热门选择。 在本文中,我们将探讨 7-Zip 是什么、它如何工作、其主要功能、独特的 7z 格式、压缩率以及帮助 创建 7z 归档 的 C# .NET SDK。 此外,我们将在 .NET 生态系统中介绍 IronZIP 作为替代解决方案。

什么是 7-Zip?

7-Zip 是一款免费开源的文件归档实用程序,允许用户压缩和解压缩文件。 由 Igor Pavlov 开发的 7-Zip 支持多种压缩格式,使其成为管理和组织数据的多功能工具。

Sevenzip C#(它如何为开发人员工作)图 1 - 7-Zip

主要功能

  • 高压缩比:7-Zip 的一大特点是其能够实现高压缩比,往往比其他归档工具更高。 这可以在存储空间和文件传输到文件夹的速度方面带来显著节省。
  • 广泛的格式支持:7-Zip 可以处理多种归档格式,包括 7z、ZIP、TAR、GZIP 等。 这种多功能性确保了与不同操作系统和软件的兼容性。
  • 加密和安全性:7-Zip 提供强大的加密功能,允许用户使用 AES-256 加密保护其归档文件。 这确保了敏感数据始终受到保护。
  • 命令行支持:除了其用户友好的图形界面,7-Zip 还提供了命令行版本,适合希望在文件管理任务中实现自动化和脚本编写的用户。

运作机制

7-Zip 利用先进的压缩算法减少文件和文件夹的大小。 它为其本地 7z 格式采用 LZMA(Lempel-Ziv-Markov chain-Algorithm)压缩算法,这有助于实现其令人印象深刻的压缩率。 该工具还支持其他常见格式如 ZIP、TAR 和 GZIP。

7z 格式

7z 格式是 7-Zip 用于其归档文件的专有格式。 它采用 LZMA 压缩算法,该算法以其出色的压缩率而闻名。 7z 格式支持固体压缩、文件拆分和自解压归档等功能。

压缩率

7-Zip 因其卓越的压缩率而闻名,特别是在使用 LZMA 算法的 7z 格式时。 这种效率使文件归档尺寸减小而不影响压缩文件的完整性。 由 7-Zip 创建的文件的压缩效果比普通 ZIP 格式高出 30-70%。

7-Zip 的 C# LZMA SDK

对于使用 C# 的开发人员,7-Zip 提供了一个 .NET SDK,能够将 7-Zip 功能无缝集成到自定义应用程序中。 SDK 允许开发人员以编程方式执行压缩和解压缩操作,为在 C# 项目中管理归档文件提供了灵活性。

如果希望在 C# 应用程序中使用 7-Zip,可以使用 7-Zip SDK 或在 C# 代码中利用命令行可执行文件。 以下是这两种方法的简要概述。

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

7-Zip SDK 包含 7z.dll 库,可以在 C# 项目中使用。 这种方法允许以编程方式执行压缩和解压缩操作。

以下是使用 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

请确保将 "path_to_7z.dll" 替换为 7z.dll 库的实际路径。 您可以在 7-Zip 安装目录中找到 7z.dll 文件。

2. 命令行可执行文件

或者,您可以通过 System.Diagnostics.Process 类在 C# 源代码中调用 7-Zip 命令行可执行文件 (7z.exe)。

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

确保 "7z.exe" 在您的系统路径中,或者在 FileName 属性中提供可执行文件的完整路径。

介绍 IronZIP

虽然 7-Zip 是一个强大的解决方案,但在 .NET 生态系统中寻求替代方案的开发人员可能会发现 IronZIP 是一个引人注目的选择。 IronZIP 是一个 .NET 压缩库,提供类似于 7-Zip 的功能,为开发人员提供工具在其 C# 应用程序中压缩、解压缩和操作归档文件。

Sevenzip C#(它如何为开发人员工作)图 2 - IronZIP

IronZIP 是一个强大的 C# ZIP 归档库,使在 .NET 应用程序中处理 ZIP 文件变得简单。 通过其用户友好的 API,开发人员可以高效地使用 IronZIP 创建、读取和提取 ZIP 归档。 以下是一个简单代码片段,展示了使用 IronZIP 创建 ZIP 归档 的简易性:

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

有关 IronZIP 及其功能或代码示例的更多信息,请访问 IronZIP 文档 页面。

结论

7-Zip 继续在文件压缩领域处于主导地位,向用户提供一个开源且功能丰富的解决方案,具有卓越的压缩率。 其对各种归档格式的支持和强大的加密功能使其成为普通用户和开发人员的多功能选择。 .NET SDK 进一步扩展了其对 C# 开发人员的实用性,便于无缝集成到自定义应用程序中。 对于在 .NET 环境中寻找替代方案的人来说,IronZIP 作为一个值得关注的竞争者脱颖而出,提供了针对 C# 开发人员特定需求的类似功能。

IronZIP 提供 IronZIP 的免费试用。 从 IronZIP 下载页面 下载并试用 IronZIP .NET Core 和 Framework 库。

常见问题解答

7-Zip 是什么以及为什么它很受欢迎?

7-Zip 是一个开源文件压缩实用程序,以高压缩比和对多种压缩格式(如 7z、ZIP、TAR 和 GZIP)的支持而闻名。由于其在数据管理中的高效性和强大的 AES-256 加密以确保安全性,所以非常受欢迎。

7z 格式如何与其他格式不同?

7z 格式采用 LZMA 压缩算法,提供卓越的压缩效率,通常比标准 ZIP 格式提高 30-70% 的压缩率。这使得它非常适合优先考虑文件大小减小的用户。

开发人员如何在 C# 项目中使用 7-Zip?

开发人员可以利用 7-Zip .NET SDK,其中包括 7z.dll 库,以编程方式将压缩和解压功能集成到 C# 应用程序中。或者,可以使用 7z.exe 命令行工具来管理压缩包。

IronZIP 为 .NET 应用程序提供了哪些优势?

IronZIP 为 .NET 应用程序提供了用户友好的 API,简化了 ZIP 文件的创建、读取和解压,这对寻求易用性和稳健的 ZIP 文件管理功能的 C# 开发人员来说是一个可行的替代方案。

我可以使用 7-Zip 加密文件吗?

可以,7-Zip 提供使用 AES-256 的强大加密功能,允许用户在压缩期间安全地加密文件和保护敏感数据。

IronZIP 是否有试用版可用?

是的,IronZIP 提供可以从他们网站下载的免费试用版。此试用版允许开发人员探索其功能并在 .NET 应用程序中集成 ZIP 文件管理。

7-Zip 的主要特点是什么?

7-Zip 的特点包括高压缩比、对多种格式的支持、强大的 AES-256 加密,以及同时提供用户友好的界面和命令行支持,以满足不同用户的需求。

如何在 C# 应用程序中使用文件归档?

您可以通过使用像 7-Zip SDK 和 7z.dll 这样的库,或者 IronZIP 这样的库,在 C# 应用程序中使用文件归档,它们都提供了处理文件压缩和解压的综合工具。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。