之前我们介绍了如何用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简单多了?

使用SharpCompress压缩,tar.gz的更多相关文章

  1. Windows如何压缩tar.gz格式

    Windows如何压缩tar.gz格式 tar.gz 是linux和unix下面比较常用的格式,几个命令就可以把文件压缩打包成tar.gz格式 然而这种格式在windows并不多见,WinRAR.Wi ...

  2. windows平台下压缩tar.gz

    windows平台下很多压缩软件(如360压缩)都支持tar.gz的解压,但不支持压缩 推荐一款支持tar.gz压缩的软件7zip 下面介绍可视化和命令行两种操作方式将文件压缩为tar.gz 可视化操 ...

  3. 在linux下解压缩 tar.gz文件

    解压:tar -xzvf 文件名 压缩 tar czf xx.tar.gz xxxx文件名

  4. 在Windows平台上利用CMD命令行来压缩和解压缩.tar.gz压缩包

    解压命令: tar -xzvf dwt.tar.gz -C tmp/ 上述命令将dwt.tar.gz压缩包解压到tmp/文件夹 压缩命令: tar -czvf dwt.tar.gz dwt/ 上述命令 ...

  5. 压缩文件tar.gz和zip之间的区别

    我们在开发的时候通常要先下载相关的软件或者是源码,或者是jar包.在下载东西的时候总是碰见后缀是.tar.gz和.zip的问题,搞不清楚是怎么回事,不晓得下载哪个文件才是对自己有用的.现在我知道了,其 ...

  6. Java将文本文件压缩为tar.gz

    压缩 思路 准备输出流 FileOutputStream BufferedOutputStream TarOutputStream GZIPOutputStream 准备输入流 FileInputSt ...

  7. 【免费】windows下如何生成tar.gz,一键生成tar.gz

    废话 一.实验背景 tar.gz 是Linux和Unix下面比较常用的格式,一条命令就可以把文件压缩打包成tar.gz格式,然而这种格式在windows并不多见. Linxu服务器上,tar.gz 包 ...

  8. Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压

    zip格式 压缩: zip -r [目标文件名].zip [原文件/目录名] 解压: unzip [原文件名].zip 注:-r参数代表递归 tar格式(该格式仅仅打包,不压缩) 打包:tar -cv ...

  9. linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...

  10. Linux操作系统中,.zip、.tar、.tar.gz、.tar.bz2、.tar.xz、.jar、.7z等格式的压缩与解压

    zip格式 压缩: zip -r [目标文件名].zip [原文件/目录名] 解压: unzip [原文件名].zip 注:-r参数代表递归 tar格式(该格式仅仅打包,不压缩) 打包:tar -cv ...

随机推荐

  1. Go runtime 调度器精讲(四):运行 main goroutine

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 皇天不负有心人,终于我们到了运行 main goroutine 环节了.让我们走起来,看看一个 goroutine 到底是怎么运行的. 1. 运 ...

  2. JavaScript – Function 函数

    参考 阮一峰 – 函数的扩展 基本用法 function fn1(param1, param2 = 'default value') { return 'return value'; } fn1('1 ...

  3. CSS – Media Query

    前言 Media Query 是用来做 RWD 的, 类似 JS 的 if else. 写的多有伤管理, 所以要谨慎使用哦. 参考: Learn CSS Media Query In 7 Minute ...

  4. SpringBoot系列:使用原生JDBC实现对数据库的增删改查

    application.yml spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306 ...

  5. BOOST库array使用 类似std库的vector

    BOOST库的array,  类似std库的vector. 下图所示书籍的下载地址,我的另一篇博客内有记载: https://www.cnblogs.com/happybirthdaytoyou/p/ ...

  6. Sql介绍 与 Sql基础查询

    Sql介绍 与 Sql基础查询 SQL SQL也称为结构化查询语言(Structure Query Language),是一种用于管理和操作关系型数据库的标准化计算机语言,SQL语言广泛应用于各种关系 ...

  7. mysql-存储过程(1) mysql循环语句

    mysql循环语句: 本文总结了mysql常见的三种循环方式:while.repeat和loop循环.还有一种goto,不推荐使用. 一.while循环 delimiter // #定义标识符为双斜杠 ...

  8. USB协议详解第7讲(补充-USB帧和微帧剖析)

    1.概念 (1)USB2.0帧和微帧属于物理层时间基准的概念,低速和全速下每个帧时长为1ms,高速下每个帧又分为8个微帧,即每个微帧时长为125us. (2)USB主机和设备控制器同步后,每个微帧起始 ...

  9. HDU-ACM 2024 Day4

    T1001 超维攻坚(HDU 7469) 三维凸包,不会. T1002 黑白边游戏(HDU 7470) 显然这道题没有一个固定的最优策略,所以只能 \(\text{dp}\) 决策. 可以倒着做,设 ...

  10. 基于 KubeSphere 的应用容器化在智能网联汽车领域的实践

    公司简介 某国家级智能网联汽车研究中心成立于 2018 年,是担当产业发展咨询与建议.共性技术研发中心.创新成果转化的国家级创新平台,旨在提高我国在智能网联汽车及相关产业在全球价值链中的地位. 目前着 ...