在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
在数据管理至关重要的当今数字时代,拥有高效的压缩和解压缩工具至关重要。 在.NET生态系统中,SharpZipLib是一个突出的工具。 在本文中,我们将深入挖掘 SharpZipLib,探索其功能、应用以及如何将其集成到您的 .NET 项目中。
SharpZipLib 是一个功能丰富的开源压缩库,适用于.NET,完全用C#编写。 它全面支持各种压缩格式,包括 ZIP、GZip 和 Tar。 SharpZipLib 由一个热心的社区开发,提供广泛的功能,可高效地压缩和解压文件。
支持多种压缩格式:SharpZipLib 支持流行的压缩格式,如 ZIP、GZip 和 Tar,以满足多样的使用场景和需求。
基于流的操作:该库在流上运行,使开发人员能够处理来自各种来源的数据,包括文件、内存流或网络流。 这种灵活性有利于无缝集成到应用程序的不同部分。
压缩级别:开发人员可以微调压缩级别,以根据其特定需求在压缩比和处理速度之间取得平衡。
密码保护:SharpZipLib 允许创建密码保护的 ZIP 压缩档案,通过使用指定密码对内容进行加密来确保数据安全。
文件压缩和归档:SharpZipLib 非常适合需要压缩和归档文件的应用程序,例如备份工具、文件管理工具或数据导出功能。
Web 服务和 API: 处理文件传输或数据交换的 Web 服务通常会通过压缩来减少带宽使用。 SharpZipLib 可以无缝集成到这些服务中,从而高效地压缩传出数据或解压传入有效载荷。
桌面应用程序:处理大型数据集或资源文件的桌面应用程序可以利用SharpZipLib压缩文件以便存储或分发。 这对软件安装程序或数据同步工具尤其有用。
开源:作为一个开源库,SharpZipLib 鼓励合作和社区贡献,确保持续改进和适应不断变化的需求。
跨平台兼容性:SharpZipLib 由于是用 C# 编写并针对 .NET 框架,因此兼容多种平台,包括 Windows、Linux 和 macOS,从而增强了其多功能性。
轻量且高效:SharpZipLib 旨在轻量且高效,在提供高性能压缩和解压缩功能的同时,将资源消耗降到最低。
打开 Visual Studio,点击 "创建新项目 "选项。
根据您的需求选择合适的项目模板(例如,控制台应用程序、Windows窗体应用程序)。
指定项目名称和位置,然后单击 "下一步"。
将 SharpZipLib 集成到您的 .NET 项目中:
在您的Visual Studio IDE C# ConsoleApp 中,右键单击解决方案资源管理器中的项目,然后选择“管理 NuGet 软件包...”
在 NuGet 包管理器窗口中,搜索 "SharpZipLib"。
从搜索结果中选择 "SharpZipLib",然后点击 "安装 "按钮。
下面是一个简化示例,演示如何使用 SharpZipLib 压缩和解压文件:
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;
namespace SharpZipLibExample
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\SourceDirectory";
string zipFilePath = @"C:\OutputDirectory\compressed.zip";
// Compress files
CompressDirectory(sourceDirectory, zipFilePath);
Console.WriteLine("Files compressed successfully.");
string extractPath = @"C:\OutputDirectory\extracted";
// Decompress files
Decompress(zipFilePath, extractPath);
Console.WriteLine("Files decompressed successfully.");
}
static void CompressDirectory(string sourceDirectory, string zipFilePath)
{
using (var zipOutputStream = new ZipOutputStream(File.Create(zipFilePath)))
{
zipOutputStream.SetLevel(5); // Compression level (0-9)
// Recursively add files in the source directory to the ZIP file
AddDirectoryFilesToZip(sourceDirectory, zipOutputStream);
zipOutputStream.Finish();
zipOutputStream.Close();
}
}
static void AddDirectoryFilesToZip(string sourceDirectory, ZipOutputStream zipOutputStream)
{
string[] files = Directory.GetFiles(sourceDirectory);
foreach (string file in files)
{
var entry = new ZipEntry(Path.GetFileName(file));
zipOutputStream.PutNextEntry(entry);
using (var fileStream = File.OpenRead(file))
{
byte[] buffer = new byte[4096];
int sourceBytes;
while ((sourceBytes = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
zipOutputStream.Write(buffer, 0, sourceBytes);
}
}
}
string[] subdirectories = Directory.GetDirectories(sourceDirectory);
foreach (string subdirectory in subdirectories)
{
AddDirectoryFilesToZip(subdirectory, zipOutputStream);
}
}
static void Decompress(string zipFilePath, string extractPath)
{
using (var zipInputStream = new ZipInputStream(File.OpenRead(zipFilePath)))
{
ZipEntry entry;
while ((entry = zipInputStream.GetNextEntry()) != null)
{
string entryPath = Path.Combine(extractPath, entry.Name);
if (entry.IsFile)
{
string directoryName = Path.GetDirectoryName(entryPath);
if (!Directory.Exists(directoryName))
Directory.CreateDirectory(directoryName);
using (var fileStream = File.Create(entryPath))
{
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = zipInputStream.Read(buffer, 0, buffer.Length)) > 0)
{
fileStream.Write(buffer, 0, bytesRead);
}
}
}
else if (entry.IsDirectory)
{
Directory.CreateDirectory(entryPath);
}
}
}
}
}
}
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;
namespace SharpZipLibExample
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\SourceDirectory";
string zipFilePath = @"C:\OutputDirectory\compressed.zip";
// Compress files
CompressDirectory(sourceDirectory, zipFilePath);
Console.WriteLine("Files compressed successfully.");
string extractPath = @"C:\OutputDirectory\extracted";
// Decompress files
Decompress(zipFilePath, extractPath);
Console.WriteLine("Files decompressed successfully.");
}
static void CompressDirectory(string sourceDirectory, string zipFilePath)
{
using (var zipOutputStream = new ZipOutputStream(File.Create(zipFilePath)))
{
zipOutputStream.SetLevel(5); // Compression level (0-9)
// Recursively add files in the source directory to the ZIP file
AddDirectoryFilesToZip(sourceDirectory, zipOutputStream);
zipOutputStream.Finish();
zipOutputStream.Close();
}
}
static void AddDirectoryFilesToZip(string sourceDirectory, ZipOutputStream zipOutputStream)
{
string[] files = Directory.GetFiles(sourceDirectory);
foreach (string file in files)
{
var entry = new ZipEntry(Path.GetFileName(file));
zipOutputStream.PutNextEntry(entry);
using (var fileStream = File.OpenRead(file))
{
byte[] buffer = new byte[4096];
int sourceBytes;
while ((sourceBytes = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
zipOutputStream.Write(buffer, 0, sourceBytes);
}
}
}
string[] subdirectories = Directory.GetDirectories(sourceDirectory);
foreach (string subdirectory in subdirectories)
{
AddDirectoryFilesToZip(subdirectory, zipOutputStream);
}
}
static void Decompress(string zipFilePath, string extractPath)
{
using (var zipInputStream = new ZipInputStream(File.OpenRead(zipFilePath)))
{
ZipEntry entry;
while ((entry = zipInputStream.GetNextEntry()) != null)
{
string entryPath = Path.Combine(extractPath, entry.Name);
if (entry.IsFile)
{
string directoryName = Path.GetDirectoryName(entryPath);
if (!Directory.Exists(directoryName))
Directory.CreateDirectory(directoryName);
using (var fileStream = File.Create(entryPath))
{
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = zipInputStream.Read(buffer, 0, buffer.Length)) > 0)
{
fileStream.Write(buffer, 0, bytesRead);
}
}
}
else if (entry.IsDirectory)
{
Directory.CreateDirectory(entryPath);
}
}
}
}
}
}
Imports ICSharpCode.SharpZipLib.Zip
Imports System
Imports System.IO
Namespace SharpZipLibExample
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim sourceDirectory As String = "C:\SourceDirectory"
Dim zipFilePath As String = "C:\OutputDirectory\compressed.zip"
' Compress files
CompressDirectory(sourceDirectory, zipFilePath)
Console.WriteLine("Files compressed successfully.")
Dim extractPath As String = "C:\OutputDirectory\extracted"
' Decompress files
Decompress(zipFilePath, extractPath)
Console.WriteLine("Files decompressed successfully.")
End Sub
Private Shared Sub CompressDirectory(ByVal sourceDirectory As String, ByVal zipFilePath As String)
Using zipOutputStream As New ZipOutputStream(File.Create(zipFilePath))
zipOutputStream.SetLevel(5) ' Compression level (0-9)
' Recursively add files in the source directory to the ZIP file
AddDirectoryFilesToZip(sourceDirectory, zipOutputStream)
zipOutputStream.Finish()
zipOutputStream.Close()
End Using
End Sub
Private Shared Sub AddDirectoryFilesToZip(ByVal sourceDirectory As String, ByVal zipOutputStream As ZipOutputStream)
Dim files() As String = Directory.GetFiles(sourceDirectory)
For Each file As String In files
Dim entry = New ZipEntry(Path.GetFileName(file))
zipOutputStream.PutNextEntry(entry)
Using fileStream = System.IO.File.OpenRead(file)
Dim buffer(4095) As Byte
Dim sourceBytes As Integer
sourceBytes = fileStream.Read(buffer, 0, buffer.Length)
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: while ((sourceBytes = fileStream.Read(buffer, 0, buffer.Length)) > 0)
Do While sourceBytes > 0
zipOutputStream.Write(buffer, 0, sourceBytes)
sourceBytes = fileStream.Read(buffer, 0, buffer.Length)
Loop
End Using
Next file
Dim subdirectories() As String = Directory.GetDirectories(sourceDirectory)
For Each subdirectory As String In subdirectories
AddDirectoryFilesToZip(subdirectory, zipOutputStream)
Next subdirectory
End Sub
Private Shared Sub Decompress(ByVal zipFilePath As String, ByVal extractPath As String)
Using zipInputStream As New ZipInputStream(File.OpenRead(zipFilePath))
Dim entry As ZipEntry
entry = zipInputStream.GetNextEntry()
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: while ((entry = zipInputStream.GetNextEntry()) != null)
Do While entry IsNot Nothing
Dim entryPath As String = Path.Combine(extractPath, entry.Name)
If entry.IsFile Then
Dim directoryName As String = Path.GetDirectoryName(entryPath)
If Not Directory.Exists(directoryName) Then
Directory.CreateDirectory(directoryName)
End If
Using fileStream = File.Create(entryPath)
Dim buffer(4095) As Byte
Dim bytesRead As Integer
bytesRead = zipInputStream.Read(buffer, 0, buffer.Length)
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: while ((bytesRead = zipInputStream.Read(buffer, 0, buffer.Length)) > 0)
Do While bytesRead > 0
fileStream.Write(buffer, 0, bytesRead)
bytesRead = zipInputStream.Read(buffer, 0, buffer.Length)
Loop
End Using
ElseIf entry.IsDirectory Then
Directory.CreateDirectory(entryPath)
End If
entry = zipInputStream.GetNextEntry()
Loop
End Using
End Sub
End Class
End Namespace
SharpZipLib 长期以来一直是 .NET 语言开发社区的主要工具,它提供了处理 ZIP、GZip、Tar 和 BZip2 等压缩文件的基本功能。然而,随着技术的发展和开发人员寻求更先进的解决方案,SharpZipLib 的某些局限性已变得显而易见。
复杂性:SharpZipLib 的 API 可能会显得繁琐冗长,开发人员需要编写大量代码才能执行诸如创建或提取 ZIP 档案这样的简单任务。
缺乏现代功能:SharpZipLib缺乏对现代.NET特性和平台的支持,这使其不太适合当代开发环境。
有限的文档:虽然 SharpZipLib 已经存在很长时间,但其文档往往稀少且过时,使得开发人员难以入门或解决问题。
IronZIP 文档,由Iron Software 概览开发,是一个用于在 .NET 应用中管理 ZIP 压缩档案的现代高效解决方案。 借助其直观的 API,开发人员可以轻松创建、读取和操作 ZIP 文件。 IronZIP 提供可定制压缩级别和密码保护等高级功能,确保灵活性和数据安全性。 IronZIP 兼容最新的 .NET 版本,并对性能进行了优化,可轻松高效地简化归档管理任务。
IronZIP 功能 成为一种强大且现代化的解决方案,解决了 SharpZipLib 的不足之处。 以下是 IronZIP 如何填补空白:
高级API:IronZIP提供一个直观且对开发者友好的API,简化了归档管理任务。 有了 IronZIP,开发人员只需几行代码就能完成复杂的操作,从而减少开发时间和精力。
全面支持 .NET:IronZIP 完全支持最新的 .NET 版本,包括 .NET Core、.NET Standard 和 .NET Framework,确保与现代开发环境和平台的兼容性。
全面的文档:IronZIP 具有全面的文档和示例,使开发人员能够快速掌握其功能和特性。 大量的文档有助于简化学习曲线,便于快速集成到项目中。
压缩级别控制:IronZIP 为开发人员提供了对压缩级别的控制,允许他们根据需求调整压缩级别。 该功能可使开发人员在缩小文件大小和压缩速度之间取得平衡。
密码保护:IronZIP 支持 ZIP 档案的密码保护,增强了对敏感数据的安全性。 开发人员可以使用传统、AES128 和 AES256 密码轻松加密 ZIP 压缩文件,确保只有授权用户才能访问压缩文件的内容。
性能优化:IronZIP经过性能优化,提供比SharpZipLib更快的压缩和提取速度。 这种优化可确保开发人员在不影响性能的情况下高效处理大量数据。
探索IronZIP 文档以获取有关如何开始使用 IronZIP 的更多信息。IronZIP 代码示例帮助您轻松入门。
以下是将 XDocument 与 IronPDF 集成的步骤:
Install-Package IronZip
Install-Package IronZip
从 NuGet 浏览选项卡中选择 IronZIP,然后点击安装:
以下源代码展示了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");
}
}
}
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");
}
}
}
Imports IronZip
Imports IronZip.Enum
Friend Class Program
Shared Sub Main()
' Create an empty ZIP with the highest compression
Using 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")
End Using
End Sub
End Class
SharpZipLib 概述 是一个功能强大的 .NET 压缩库,提供丰富的功能和能力,可以高效处理压缩文件。 无论是压缩存储数据、归档文件,还是优化网络服务中的带宽使用,SharpZipLib 都能提供必要的工具来简化压缩和解压缩操作。 凭借其开源性、跨平台兼容性和强大的功能,SharpZipLib 仍然是在 .NET 应用程序中寻求压缩任务可靠解决方案的开发人员的首选。
虽然 SharpZipLib 一直是 .NET 应用程序中处理压缩归档文件的可靠选择,但在当今的开发环境中,它的局限性已变得越来越明显。 探索 IronZIP API 以填补 SharpZipLib 留下的空白,提供现代化且功能丰富的替代方案,优先考虑易用性、性能和兼容性。 有了 IronZIP,开发人员可以利用先进的功能和直观的 API,开启归档管理的新可能性,并简化开发工作流程。
IronZIP 提供免费试用许可概述。 从IronZIP Downloads下载库并试用。