在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
在数据管理至关重要的当今数字时代,拥有高效的压缩和解压缩工具至关重要。 在 .NET 生态系统中脱颖而出的一款工具是SharpZipLib. 在本文中,我们将深入挖掘 SharpZipLib,探索其功能、应用以及如何将其集成到您的 .NET 项目中。
SharpZipLibC# Compression 是一个功能丰富、开源的 .NET 压缩库,完全用 C# 编写。 它全面支持各种压缩格式,包括 ZIP、GZip 和 Tar。 SharpZipLib 由一个热心的社区开发,提供广泛的功能,可高效地压缩和解压文件。
支持多种压缩格式: SharpZipLib 支持 ZIP、GZip 和 Tar 等流行的压缩格式,可满足不同的使用情况和要求。
基于流的操作: 该库基于流进行操作,使开发人员能够处理各种来源的数据,包括文件、内存流或网络流。 这种灵活性有利于无缝集成到应用程序的不同部分。
压缩级别: 开发人员可以根据自己的具体需求,微调压缩级别,在压缩率和处理速度之间取得平衡。
密码保护: SharpZipLib 允许创建受密码保护的 ZIP 压缩文件,通过使用指定密码对内容进行加密来确保数据安全。
文件压缩和归档: SharpZipLib 非常适合需要压缩和归档文件的应用程序,如备份工具、文件管理工具或数据导出功能。
网络服务和应用程序接口: 处理文件传输或数据交换的网络服务通常受益于压缩,以减少带宽使用。 SharpZipLib 可以无缝集成到这些服务中,从而高效地压缩传出数据或解压传入有效载荷。
桌面应用程序: 处理大型数据集或资源文件的桌面应用程序可以利用 SharpZipLib 压缩文件以进行存储或分发。 这对软件安装程序或数据同步工具尤其有用。
开源: 作为一个开源库,SharpZipLib 鼓励协作和社区贡献,以确保持续改进和适应不断变化的需求。
跨平台兼容性: SharpZipLib 由 C# 编写,以 .NET Framework 为目标,兼容 Windows、Linux 和 macOS 等各种平台,增强了其通用性。
轻便高效: SharpZipLib 的设计轻便高效,在提供高性能压缩和解压缩功能的同时最大限度地减少了资源消耗。
打开 Visual Studio,点击 "创建新项目 "选项。
根据您的要求选择合适的项目模板(例如,控制台应用程序、Windows 窗体应用程序).
指定项目名称和位置,然后单击 "下一步"。
将 SharpZipLib 集成到您的 .NET 项目中:
在您的Visual Studio IDEC# 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 应用程序中,.NET ZIP 压缩包是管理 ZIP 存档的现代高效解决方案。 借助其直观的 API,开发人员可以轻松创建、读取和操作 ZIP 文件。 IronZIP 提供可定制压缩级别和密码保护等高级功能,确保灵活性和数据安全性。 IronZIP 兼容最新的 .NET 版本,并对性能进行了优化,可轻松高效地简化归档管理任务。
IronZIP 功能在《SharpZipLib》中,SharpZipLib 作为一个强大而现代的解决方案出现,解决了 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
从 NuGet 浏览选项卡中选择 IronZIP,然后点击安装:
以下源代码展示了 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 的强大压缩库,.NET.NET.NET.NET 压缩工具提供了一套丰富的特性和功能,可高效处理压缩文件。 无论是压缩存储数据、归档文件,还是优化网络服务中的带宽使用,SharpZipLib 都能提供必要的工具来简化压缩和解压缩操作。 凭借其开源性、跨平台兼容性和强大的功能,SharpZipLib 仍然是在 .NET 应用程序中寻求压缩任务可靠解决方案的开发人员的首选。
虽然 SharpZipLib 一直是 .NET 应用程序中处理压缩归档文件的可靠选择,但在当今的开发环境中,它的局限性已变得越来越明显。 探索 IronZIP APISharpZipLib》的出现填补了 SharpZipLib 的空白,提供了一个功能丰富的现代化替代工具,并将易用性、性能和兼容性放在首位。 有了 IronZIP,开发人员可以利用先进的功能和直观的 API,开启归档管理的新可能性,并简化开发工作流程。
IronZIP 提供了一个免费试用许可概述. 从以下网址下载资料库IronZIP 下载并试一试。