.NET 帮助

七Zip C# (为开发者的工作原理)

Chipego
奇佩戈-卡琳达
2023年十二月24日
分享:

介绍

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

什么是 SevenZip?

SevenZip 或 7-Zip 是一个免费且开源的文件压缩工具,允许用户压缩和解压文件。 7-Zip 由 Igor Pavlov 开发,支持多种压缩格式,是管理和组织数据的多功能工具。

Sevenzip C#(开发者如何使用)图1 - 7-Zip

主要特点

  • 高压缩比:7-Zip 的一大特色是其能够实现高压缩比,通常超过其他压缩工具。 这样可以大大节省存储空间,加快文件传输到文件夹的速度。
  • 广泛的格式支持:7-Zip 可以处理多种压缩格式,包括 7z、ZIP、TAR、GZIP 等。 这种通用性确保了与不同操作系统和软件的兼容性。
  • 加密和安全性:7-Zip提供了强大的加密功能,允许用户使用AES-256加密来保护他们的存档。 这样才能确保敏感数据得到保护。
  • 命令行支持: 除了用户友好的图形界面外,7-Zip 还提供了命令行版本,适用于喜欢在文件管理任务中进行自动化和脚本化的用户。

如何工作

7-Zip 采用先进的压缩算法来减小文件和文件夹的大小。 它采用LZMA(Lempel-Ziv-Markov链算法)压缩算法用于其本机7z格式,从而实现了令人印象深刻的压缩比。 该工具还支持 ZIP、TAR 和 GZIP 等其他常见格式。

7z 格式

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

压缩率

7-Zip 以其出色的压缩率而闻名,尤其是在使用带有 LZMA 算法的 7z 格式时。 这样既能提高效率,缩小归档文件的大小,又不会影响压缩文件的完整性。 使用 7-Zip 创建的文件压缩率比普通 ZIP 格式高 30-70%。

C# 的 7-Zip 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");
        // 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");
        }
    }
}

请确保将 "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();
        }
    }
}

确保“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!");
    }
}

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

结论

7-Zip 始终是文件压缩领域的主导力量,为用户提供了一个开源、功能丰富且压缩率极高的解决方案。 .NET SDK 支持各种存档格式,并具有强大的加密功能,是休闲用户和开发人员的多功能选择。.NET SDK 进一步将其实用性扩展到 C# 开发人员,便于无缝集成到自定义应用程序中。 对于那些在 .NET 领域寻找替代品的人来说,IronZIP 是一个值得关注的竞争者,它针对 C# 开发人员的特定需求提供了类似的功能。

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

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
Mailkit C#(它是如何为开发人员工作的)
下一步 >
ByteSize C#(它如何为开发人员工作)