使用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简单多了?

posted @   jvx  阅读(1782)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示