使用SharpCompress压缩,tar.gz
之前我们介绍了如何用SharpZipLib
来打.tar.gz压缩包。
但是这个压缩软件有两个问题,一是代码比较多,压缩起来没有那么方便;二是压缩的.tar.gz在linux上解压时会有警告,需要跳过这些警告。
SharpCompress解决了这两个问题,使用SharpCompress压缩的.tar.gz包在linux上是没有警告的。
而且它的代码量可以说相当小了。
using (var zip = File.OpenWrite("C:\\test.tar.gz"))
using (var zipWriter = WriterFactory.Open(zip, ArchiveType.Tar, CompressionType.GZip))
{
zipWriter.WriteAll(filesPath, "*", SearchOption.AllDirectories);
}
是的,你没看错,其实只需要三句代码而已。
第一句var zip = File.OpenWrite("C:\\test.tar.gz")
打开一个压缩文件流。如果不需要生成文件,我们这里可以使用MemonyStream
来生成一个内存流。
第二句var zipWriter = WriterFactory.Open(zip, ArchiveType.Tar, CompressionType.GZip)
,我们用WriterFactory
写工厂打开一个Writer
,第一个参数是我们的流,第二个参数指定我们要写tar
文件,第三个参数是说压缩方式为gzip
。
这样我们就拿到了一个.tar.gz的Writer。
第三句zipWriter.WriteAll(filesPath, "*", SearchOption.AllDirectories);
,就是写入所有的文件,filesPath
是我们要写入的文件路径,*
是通配符,我们可以从这里来指定需要写入哪些类型的文件。SearchOption.AllDirectories
是搜索目录下的所有目录,我们也可以用Top来指定只写第一层,不处理子目录。
这样我们就完成了一个.tar.gz的文件生成。
是不是要比使用SharpZipLib
简单多了?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!