ITADN
adamhathcock/sharpcompress
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

SharpCompress

SharpCompress 是一个纯 C# 编写的压缩库,支持 .NET Framework 4.8、.NET Standard 2.0/2.1、.NET 6.0、.NET 8.0 和 .NET 10.0,能够 unrar、un7zip、unzip、untar、unbzip2、ungzip、unlzip、unxz、unzstd、unarc、unarj、unace 和 unlzw,并提供仅向前读取和文件随机访问 API。已实现 zip、tar、bzip2、gzip、lzip、zstandard 压缩流以及 7zip 归档的写入支持。

主要特性是支持不可寻址流,因此可以即时处理大文件(即下载流)。

新增: 所有 I/O 操作现在支持 async/await,以提升性能和可扩展性。请参阅 USAGE.md 获取示例。

GitHub Actions 构建 - SharpCompress Static Badge

需要帮助?

在 Github 上发布 Issue!

查看 支持的格式API 参考基本用法

自定义压缩提供程序

如果需要替换 SharpCompress 内置的编解码器,ReaderOptionsWriterOptions 上的 Providers 属性(以及 WithProviders(...) 扩展)允许你提供一个 CompressionProviderRegistry。所选注册表被 Reader/Writer API、Archive API 和异步提取路径使用,因此相同的提供程序选择会一致地应用于打开/读取/写入流程。默认注册表已配置好,因此只有当你想要插入替代方案(如 SystemGZipCompressionProvider 或第三方 CompressionProvider)时才需要自定义。请参阅 docs/USAGE.md#custom-compression-providers 获取引导示例。

推荐格式

通常,我推荐 GZip (Deflate)/BZip2 (BZip)/LZip (LZMA),因为这些格式的简洁性有助于更好的长期归档以及流式传输。Tar 通常与多个文件结合使用,以在单个归档中存储(例如 .tar.gz

Zip 还可以,但它是一种非常随意的格式,头部和实现的差异使其难以正确实现。默认使用 Deflate,但支持许多压缩方法。

不推荐 RAR,因为它是一种专有格式,且压缩算法是闭源的。对于 LZMA,请使用 Tar/LZip

7Zip 和 XZ 都过于复杂。7Zip 不支持流式格式。XZ 存在已知漏洞,解释如下:(http://www.nongnu.org/lzip/xz_inadequate.html) 请改用 Tar/LZip 进行 LZMA 压缩。

ZStandard 是一种高效的格式,非常适合流式传输,并具有灵活的压缩级别,以便调整您所寻求的速度/性能权衡。

一个简单的请求

大家好。我希望你们正在使用 SharpCompress 并觉得它有用。请就你们希望看到的变化提供反馈,尤其是在易用性方面。新功能建议也始终受欢迎。我还想了解 SharpCompress 正在被用于哪些项目。我喜欢看到它的使用方式,以便为未来版本提供灵感。谢谢!

请不要直接给我发邮件寻求帮助。如果您认为存在真实的问题,请在此处报告。

想要贡献?

我一直在寻找帮助或想法。请提交代码或发送包含想法的电子邮件。不幸的是,仅仅告诉我你想帮忙是不够的,因为我确实没有关于需要做什么的整体计划。我肯定会接受代码提交,并将你添加为项目成员!

备注

XZ 实现基于:https://github.com/sambott/XZ.NET,由 @sambott 提供

XZ BCJ 过滤器支持由 Louis-Michel Bergeron 代表 aDolus Technology Inc. 贡献 - 2022

7Zip 实现基于:https://code.google.com/p/managed-lzma/

Zstandard 实现来自:https://github.com/oleg-st/ZstdSharp

LICENSE Copyright (c) 2000 - 2011 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)

特此授予任何获得本软件及相关文档文件(“软件”)副本的人免费许可,以无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向其提供软件的人这样做,但须遵守以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或重要部分中。

软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他行为引起的、与软件或软件的使用或其他交易相关的任何索赔、损害或其他责任承担责任。