7z格式采用的LZMA算法,号称具有现今最高压缩率。笔者在nuget上搜索7z,在搜索结果中最终选择了SevenZipSharp来进行压缩/解压。不得不说,SevenZipSharp的API设计得非常方便。

压缩调用:

using (FileStream ostream = new FileStream(outputpath, FileMode.Create, FileAccess.Write))
{
using (FileStream istream = new FileStream(inputpath, FileMode.Open, FileAccess.Read))
{
SevenZipCompressor compressor = new SevenZipCompressor();
// 这里可以输入多个文件名/流对
Dictionary<string, Stream> dict = new Dictionary<string, Stream> { { inputpath, istream } };
compressor.CompressStreamDictionary(dict, ostream);
}
}

解压调用:

using (FileStream istream = new FileStream(inputpath, FileMode.Open, FileAccess.Read))
{
SevenZip.SevenZipExtractor extractor = new SevenZip.SevenZipExtractor(istream);
extractor.ExtractArchive(outputpath); // 全部解压到指定目录
using (FileStream ostream = new FileStream(outputpath, FileMode.Create, FileAccess.Write))
{
extractor.ExtractFile(, ostream); // 流式解压指定文件
}
}

顺便附上zlib的压缩/解压(使用zlib.net库):

// 压缩
static void Compress(string inputpath, string outputpath)
{
using (FileStream ostream = new FileStream(outputpath, FileMode.Create, FileAccess.Write))
{
using (FileStream istream = new FileStream(inputpath, FileMode.Open, FileAccess.Read))
{
using (ZOutputStream zstream = new ZOutputStream(ostream, zlibConst.Z_BEST_COMPRESSION))
{
CopyStream(istream, zstream);
}
}
}
} // 解压
static void Decompress(string inputpath, string outputpath)
{
using (FileStream ostream = new FileStream(outputpath, FileMode.Create, FileAccess.Write))
{
using (FileStream istream = new FileStream(inputpath, FileMode.Open, FileAccess.Read))
{
using (ZOutputStream zstream = new ZOutputStream(ostream))
{
CopyStream(istream, zstream);
}
}
}
} static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[];
int len;
while ((len = input.Read(buffer, , )) > )
{
output.Write(buffer, , len);
}
output.Flush();
}

使用SevenZipSharp压缩/解压7z格式的更多相关文章

  1. [压缩]C#下使用SevenZipSharp压缩解压文本

    using SevenZip; using System; using System.Collections.Generic; using System.IO; using System.Linq; ...

  2. mac解压7z格式文件

    brew直接安装解压工具 $ brew search 7z p7zip $ brew install p7zip ==> Downloading https://downloads.source ...

  3. Linux压缩解压 tar.gz格式的文件.查看tomcat是否运行

    tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...

  4. 使用C#压缩解压rar和zip格式文件

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  5. 【转载】.NET压缩/解压文件/夹组件

    转自:http://www.cnblogs.com/asxinyu/archive/2013/03/05/2943696.html 阅读目录 1.前言 2.关于压缩格式和算法的基础 3.几种常见的.N ...

  6. Linux 压缩解压

    压缩解压 ------------------------------------------ linux 下所有的压缩格式,WinRAR 都支持 gzip .gz 格式 压缩文件: gzip 文件名 ...

  7. SAPCAR 压缩解压软件的使用方法

    SAPCAR 是 SAP 公司使用的压缩解压软件,从 SAP 网站下载的补丁包和小型软件基本都是扩展名为 car 或 sar 的,它们都可以用 SAPCAR 来解压.下面是它的使用说明: 用法: 创建 ...

  8. Linux学习笔记(7)Linux常用命令之压缩解压命令

    (1)gzip gzip命令用于压缩文件,英文原意为GNU zip,所在路径/bin/gzip,其语法格式为: gzip [文件] 压缩后的文件格式为.gz. 例:将/etc目录下的services文 ...

  9. linux笔记:压缩解压命令gzip,gunzip,tar,zip,unzip,bzip2,bunzip2

    命令名称:gzip功能:压缩文件命令所在路径:/bin/gzip用法:gzip 文件压缩后文件格式:.gz其他:压缩后不保留原文件:只能压缩文件,不能压缩目录 命令名称:gunzip功能:解压.gz格 ...

随机推荐

  1. Windows编程坐标系统概念

    Windows编程中关于设置映象模式的四个函数 SetWindowOrgSetViewPortOrgSetMapModeSetWindowExtExSetViewPortExtEx 一.Windows ...

  2. maven引用net.sf.json-lib

    json-lib提供了两个jdk版本的实现, json-lib-2.1-jdk13.jar和json-lib-2.1-jdk15.jar <dependency>      <gro ...

  3. mac环境下mentohust锐捷登录配置

    今天测试react native嵌入原生项目,账号流量恰好用完,想换同学账号却不会更改配置,以至于被网络弄得头疼了一中午.于是,好好研究了一下这个mentohust 一.需要下载的文件 我已经全部整理 ...

  4. p1154 地平线

    题目描述 Farmer John的牛们认为,太阳升起的那一刻是一天中最美好的,在那时她们可以看到远方城市模糊的轮廓.显然,这些轮廓其实是城市里建筑物模糊的影子. 建筑物的影子实在太模糊了,牛们只好把它 ...

  5. zhenai

    1.2=http://files.cnblogs.com/files/bqh10086/zhenai_1.2_pack.zip

  6. 第22篇 js中的this指针的用法

    前面把js的相关知识总结了下,今天把js中的上下文的this,对于强类型语言,this的用法非常的单一,因为他们没有js特有的动态绑定. 首先看下面代码: function funcA() { thi ...

  7. 代写编程的作业、笔试题、课程设计,包括但不限于C/C++/Python

    代写编程作业/笔试题/课程设计,包括但不限于C/C++/Python 先写代码再给钱,不要任何定金!价钱公道,具体见图,诚信第一! (截止2016-11-22已接12单,顺利完成!后文有成功交付的聊天 ...

  8. php与mysql之间操作原理

    php和mysql相关扩展有:mysql.mysqli和pdo三种 mysql扩展从php5.5.0被废弃,并且从从php7.0.0开始被废除 mysql之前的使用---几个基本的函数:mysql_c ...

  9. Robot Framework自动化测试环境部署

    文档版本:v1.0 作者:令狐冲 如有问题请发邮件到:1146009864@qq.com 使用Robot Framework框架(以下简称RF)来做自动化测试. 模块化设计 1.所需环境一览表 软件 ...

  10. SDWebImage下载图片的使用

    第一步,下载SDWebImage,导入工程.github托管地址https://github.com/rs/SDWebImage 第二步,在需要的地方导入头文件 1 #import "UII ...