IRONSOFTWAREHOME
开发者更新

Sharpziplib 提取 ZIP C#(开发人员如何使用)

Jacob Mellor,Team Iron 的首席技术官
Jacob Mellor
Updated: 2026年4月21日

在当今数字化环境中,数据管理至关重要,因此拥有高效的压缩和解压缩工具至关重要。 在.NET生态系统中,有一个脱颖而出的工具是SharpZipLib。 在本文中,我们将深入探讨SharpZipLib,探索它的功能、应用及如何将其集成到你的.NET项目中。

什么是 SharpZipLib?

SharpZipLib是一个功能丰富的开源压缩库,专为.NET编写,完全使用C#编写。 它提供对多种压缩格式的全面支持,包括ZIP、GZip和Tar。 由一个专注的社区开发,SharpZipLib提供了广泛的功能,以高效地压缩和解压缩文件。

功能和能力

  1. **支持多种压缩格式:**SharpZipLib支持流行的压缩格式,如ZIP、GZip和Tar,以满足多样化的用例和需求。
  2. **基于流的操作:**该库在流上操作,使开发人员能够处理来自各种来源的数据,包括文件、内存流或网络流。 这种灵活性促进了在应用程序不同部分中的无缝集成。
  3. **压缩等级:**开发人员可以根据具体需要微调压缩等级,以在压缩比和处理速度之间取得平衡。
  4. **密码保护:**SharpZipLib允许创建受密码保护的ZIP档案,通过用指定的密码加密内容来确保数据安全。
  5. **错误处理和恢复:**强大的错误处理机制使开发人员能够在压缩和解压缩操作期间优雅地处理异常。 此外,SharpZipLib支持从损坏的档案中恢复,提高了可靠性。

用例

  1. **文件压缩和归档:**SharpZipLib非常适合需要压缩和归档文件的应用程序,例如备份工具、文件管理工具或数据导出功能。
  2. **Web服务和API:**处理文件传输或数据交换的Web服务通常受益于压缩以减少带宽使用。 SharpZipLib可以无缝集成到此类服务中,以高效压缩传出数据或解压入站负载。
  3. **桌面应用程序:**处理大数据集或资源文件的桌面应用程序可以利用SharpZipLib来压缩文件以进行存储或分发。 这对于软件安装程序或数据同步工具尤为有用。
  4. **数据备份和存储:**需要周期性备份或以压缩格式存储数据的应用程序可以使用SharpZipLib自动执行备份过程,并有效地保存存储空间。

SharpZipLib的优点

  1. **开源:**作为一个开源库,SharpZipLib鼓励合作和社区贡献,确保了持续的改进和适应不断变化的需求。
  2. **跨平台兼容性:**SharpZipLib是用C#编写的,并以.NET框架为目标,支持与Windows、Linux和macOS等多种平台的兼容,增强了其多功能性。
  3. **轻量和高效:**SharpZipLib旨在轻量和高效,最大限度地减少资源消耗,同时提供高性能的压缩和解压缩能力。
  4. **广泛的文档和支持:**全面的文档和社区支持使开发人员更容易在使用SharpZipLib时集成和排查问题。

创建C# Visual Studio项目

  1. 打开Visual Studio并点击"创建一个新的项目"选项。 2.根据您的要求选择合适的项目模板(例如,控制台应用程序、Windows 窗体应用程序)。

    Sharpziplib Extract ZIP C# (How It Works For Developers): Figure 1 - For the new project, select a "Console App" in C#.

3.指定项目名称和位置,然后单击 "下一步"。

Sharpziplib提取ZIP C#(开发者的工作原理):图2 - 通过指定项目名称、位置和解决方案名称配置项目。接下来,选择.NET框架并点击创建。 点击"创建"以创建项目。

4.从 "附加信息 "中选择最新的 .NET Framework。 点击"创建"以创建项目。

要将SharpZipLib集成到你的.NET项目中:

  1. 在你的Visual Studio IDE C# ConsoleApp中,右键点击Solution Explorer中的项目并选择"管理NuGet包..."

  2. 在你的 Visual Studio IDE C# ConsoleApp中,在解决方案资源管理器中右键点击你的项目并选择"管理NuGet包..." Sharpziplib提取ZIP C#(开发者的工作原理):图3 - 使用解决方案的NuGet包管理器安装SharpZipLib,通过在NuGet包管理器的搜索栏中搜索"sharpziplib",然后选择项目并点击安装按钮。

    Sharpziplib Extract ZIP C# (How It Works For Developers): Figure 3 - Install SharpZipLib using the Manage NuGet Package for Solution by searching "sharpziplib" in the search bar of NuGet Package Manager, then select the project and click on the Install button.

  3. NuGet将自动下载并将必要的依赖项添加到你的项目中。 以下是演示如何使用SharpZipLib高效压缩和解压缩文件的简化示例:

代码示例

SharpZipLib长期以来一直是.NET语言开发社区的主力,为处理如ZIP、GZip、Tar和BZip2等压缩档案提供了基本功能。然而,随着技术的发展和开发者寻求更高级的解决方案,SharpZipLib的某些限制逐渐显现。

using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;

namespace SharpZipLibExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\SourceDirectory";     // Source directory containing files to compress
            string zipFilePath = @"C:\OutputDirectory\compressed.zip"; // Output path for the compressed ZIP file

            // Compress files from the source directory
            CompressDirectory(sourceDirectory, zipFilePath);
            Console.WriteLine("Files compressed successfully.");

            string extractPath = @"C:\OutputDirectory\extracted"; // Path to extract the decompressed files

            // Decompress files from the ZIP archive
            Decompress(zipFilePath, extractPath);
            Console.WriteLine("Files decompressed successfully.");
        }

        // Method to compress all files in a directory to a ZIP file
        static void CompressDirectory(string sourceDirectory, string zipFilePath)
        {
            using (var zipOutputStream = new ZipOutputStream(File.Create(zipFilePath)))
            {
                zipOutputStream.SetLevel(5); // Set compression level (0-9), 5 as a mid-range

                // Recursively add files in the source directory to the ZIP file
                AddDirectoryFilesToZip(sourceDirectory, zipOutputStream);

                zipOutputStream.Finish();
                zipOutputStream.Close();
            }
        }

        // Method to add files from a directory to a ZIP output stream
        static void AddDirectoryFilesToZip(string sourceDirectory, ZipOutputStream zipOutputStream)
        {
            // Get list of files in the directory
            string[] files = Directory.GetFiles(sourceDirectory);

            foreach (string file in files)
            {
                var entry = new ZipEntry(Path.GetFileName(file)); // Create a new entry for each file
                zipOutputStream.PutNextEntry(entry);

                using (var fileStream = File.OpenRead(file))
                {
                    // Buffer for reading files
                    byte[] buffer = new byte[4096];
                    int sourceBytes;

                    // Read file and write to ZIP stream
                    while ((sourceBytes = fileStream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        zipOutputStream.Write(buffer, 0, sourceBytes);
                    }
                }
            }

            // Handle subdirectories recursively
            string[] subdirectories = Directory.GetDirectories(sourceDirectory);
            foreach (string subdirectory in subdirectories)
            {
                AddDirectoryFilesToZip(subdirectory, zipOutputStream);
            }
        }

        // Method to decompress files from a ZIP file
        static void Decompress(string zipFilePath, string extractPath)
        {
            using (var zipInputStream = new ZipInputStream(File.OpenRead(zipFilePath)))
            {
                ZipEntry entry;
                // Read entries from the ZIP archive
                while ((entry = zipInputStream.GetNextEntry()) != null)
                {
                    string entryPath = Path.Combine(extractPath, entry.Name);

                    // Process files
                    if (entry.IsFile)
                    {
                        string directoryName = Path.GetDirectoryName(entryPath);
                        if (!Directory.Exists(directoryName))
                            Directory.CreateDirectory(directoryName);

                        using (var fileStream = File.Create(entryPath))
                        {
                            // Buffer for reading entries
                            byte[] buffer = new byte[4096];
                            int bytesRead;
                            // Read from ZIP stream and write to file
                            while ((bytesRead = zipInputStream.Read(buffer, 0, buffer.Length)) > 0)
                            {
                                fileStream.Write(buffer, 0, bytesRead);
                            }
                        }
                    }
                    else if (entry.IsDirectory) // Process directories
                    {
                        Directory.CreateDirectory(entryPath);
                    }
                }
            }
        }
    }
}

SharpZipLib的限制

  1. 复杂性:SharpZipLib的API可能很繁琐和冗长,开发者需要编写冗长的代码来执行一些简单任务,如创建或提取ZIP档案。

1.复杂性: SharpZipLib 的 API 可能很繁琐冗长,需要开发人员编写冗长的代码来执行创建或提取 ZIP 归档等简单任务。 2.缺乏现代功能: SharpZipLib 缺乏对现代 .NET 功能和平台的支持,使其不太适合现代开发环境。 3.**文档有限:**虽然 SharpZipLib 已经存在很长时间了,但其文档通常很少且过时,这使得开发人员难以入门或解决问题。 4.性能: SharpZipLib 的性能可能并不总是能满足开发人员的期望,尤其是在处理大型或复杂的归档文件时。

IronZIP:弥补差距

IronZIP文档,由 Iron Software概述 开发,是一个现代且高效的解决方案,用于在.NET应用程序中管理ZIP档案。 IronZIP提供了可定制的压缩级别和密码保护等高级功能,确保灵活性和数据安全。 与最新的.NET版本兼容并进行性能优化,IronZIP简化了档案管理任务,使其轻松高效。 与最新的.NET版本兼容并经过性能优化的IronZIP轻松高效地简化了归档管理任务。

Sharpziplib 抽取 ZIP C# (开发者如何操作):图4 - IronZIP for .NET:C# Zip 压缩库

IronZIP特点 作为一种强大且现代的解决方案,解决了SharpZipLib的不足之处。 1. 高级API:IronZIP提供了一个直观且对开发者友好的API,简化了档案管理任务。

1.高级 API: IronZIP 提供直观且对开发者友好的 API,简化归档管理任务。 2. 全面.NET支持:IronZIP完全支持最新的.NET版本,包括.NET Core、.NET Standard和.NET Framework,确保与现代开发环境和平台的兼容性。 2.完全支持 .NET: IronZIP 完全支持最新的 .NET 版本,包括 .NET Core、.NET Standard 和 .NET Framework,确保与现代开发环境和平台兼容。 3.全面的文档: IronZIP 附带全面的文档和示例,使开发人员能够快速掌握其特性和功能。 4. 压缩等级控制:IronZIP为开发者提供了对压缩等级的控制,使他们可以根据需求调整压缩级别。 4.压缩级别控制: IronZIP 为开发者提供了对压缩级别的控制,允许他们根据自身需求调整压缩级别。 此功能使开发人员能够在文件大小减少和压缩速度之间取得平衡。 5.密码保护: IronZIP 支持对 ZIP 压缩文件进行密码保护,从而增强敏感数据的安全性。 6. 性能优化:IronZIP的性能得到优化,提供了比SharpZipLib更快的压缩和提取速度。 6.性能优化: IronZIP 针对性能进行了优化,与 SharpZipLib 相比,可提供更快的压缩和提取速度。 探索IronZIP文档以获取更多关于如何开始使用IronZIP的信息。IronZIP示例代码帮助你轻松开始。

查看IronZIP文档以获取有关如何开始使用IronZIP的更多信息。IronZIP代码示例帮助您轻松开始。

以下是将XDocument与IronPDF集成的步骤:

  • 打开Visual Studio IDE或你的首选IDE。

  • 打开Visual Studio IDE或你偏好的IDE。

  • 运行以下命令以安装IronZIP包:

  • 或者,你可以从解决方案的NuGet包管理器中安装它。

    PM > Install-Package IronPdf

  • 从NuGet浏览选项卡中选择IronZIP并点击安装: Sharpziplib提取ZIP C#(开发者的工作原理):图5 - 使用解决方案的NuGet包管理器安装IronZIP,通过在NuGet包管理器的搜索栏中搜索"IronZIP",然后选择项目并点击安装按钮。

Sharpziplib Extract ZIP C# (How It Works For Developers): Figure 5 - Install IronZIP using the Manage NuGet Package for Solution by searching "IronZIP" in the search bar of NuGet Package Manager, then select the project and click on the Install button.

代码示例

以下源代码展示了如何使用IronZIP高效地创建ZIP文件,只需几行代码即可轻松完成。 在这里,您可以通过提供指定文件夹中的文件名,将多个文件添加到受密码保护的ZIP档案。 在创建IronZipArchive对象时,您还可以指定压缩级别以减少输出文件的空间大小。

using IronZip;
using IronZip.Enum;

class Program
{
    static void Main()
    {
        // Create an empty ZIP with the highest compression
        using (var archive = new IronZipArchive(9))
        {
            // Password protect the ZIP (Support AES128 & AES256)
            archive.SetPassword("P@ssw0rd", EncryptionMethods.Traditional);
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.txt");
            // Export the ZIP
            archive.SaveAs("output.zip");
        }
    }
}

输出ZIP文件

Sharpziplib 抽取 ZIP C# (开发者如何操作):图6 - 输出:使用 IronZIP 创建的密码保护的 Zip 压缩档案。

结论

SharpZipLib概述作为一个强大的.NET压缩库,提供了丰富的功能和能力,以高效处理压缩文件。 无论是用于存储的数据压缩、文件归档,还是优化Web服务中的带宽使用,SharpZipLib都提供了必要的工具,以简化压缩和解压缩操作。 虽然SharpZipLib一直是.NET应用中处理压缩档案的可靠选择,但在当今开发环境中,其局限性越来越明显。

探索IronZIP API填补了SharpZipLib留下的空白,提供了一个现代化且功能丰富的替代方案,优先考虑易用性、性能和兼容性。 探索IronZIP API填补SharpZipLib留下的空白,提供一种现代和功能丰富的替代方案,优先考虑易用性、性能和兼容性。 IronZIP提供免费试用许可概览。

从IronZIP下载下载库并尝试一下。 从 IronZIP Downloads 下载该库并试用。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥。

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999 起