使用SevenZipSharp压缩/解压7z格式
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格式的更多相关文章
- [压缩]C#下使用SevenZipSharp压缩解压文本
using SevenZip; using System; using System.Collections.Generic; using System.IO; using System.Linq; ...
- mac解压7z格式文件
brew直接安装解压工具 $ brew search 7z p7zip $ brew install p7zip ==> Downloading https://downloads.source ...
- Linux压缩解压 tar.gz格式的文件.查看tomcat是否运行
tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...
- 使用C#压缩解压rar和zip格式文件
为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...
- 【转载】.NET压缩/解压文件/夹组件
转自:http://www.cnblogs.com/asxinyu/archive/2013/03/05/2943696.html 阅读目录 1.前言 2.关于压缩格式和算法的基础 3.几种常见的.N ...
- Linux 压缩解压
压缩解压 ------------------------------------------ linux 下所有的压缩格式,WinRAR 都支持 gzip .gz 格式 压缩文件: gzip 文件名 ...
- SAPCAR 压缩解压软件的使用方法
SAPCAR 是 SAP 公司使用的压缩解压软件,从 SAP 网站下载的补丁包和小型软件基本都是扩展名为 car 或 sar 的,它们都可以用 SAPCAR 来解压.下面是它的使用说明: 用法: 创建 ...
- Linux学习笔记(7)Linux常用命令之压缩解压命令
(1)gzip gzip命令用于压缩文件,英文原意为GNU zip,所在路径/bin/gzip,其语法格式为: gzip [文件] 压缩后的文件格式为.gz. 例:将/etc目录下的services文 ...
- linux笔记:压缩解压命令gzip,gunzip,tar,zip,unzip,bzip2,bunzip2
命令名称:gzip功能:压缩文件命令所在路径:/bin/gzip用法:gzip 文件压缩后文件格式:.gz其他:压缩后不保留原文件:只能压缩文件,不能压缩目录 命令名称:gunzip功能:解压.gz格 ...
随机推荐
- java初级开发程序员(第三单元)
1.if基本选择结构: 语法: if(条件){ //程序执行时,先判断条件.当结果为true(真)时,程序先执行大括号的代码块,再执行if结构(即{}部分)后面的代码.当结果为false(假) ...
- groovy学习(五) 命令行输入输出
isr = new InputStreamReader(System.in);br = new BufferedReader(isr);name = br.readLine();println(&qu ...
- ios用户体验
如果转载此文,请注明出处:http://blog.csdn.net/paulery2012/article/details/25157347,谢谢! 前言: 本文是在阅读<ios用户体验> ...
- 写好你的JavaScript
关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 在实际工作中,我们应该经常会看到一些功能上没有问题,但编码风格和规范却十分糟糕的代码,这往往会让人不 ...
- 简单分析beyond作曲
本人绝对是业余的哈 业余到什么水平呢?正在练习爬格子,还是一个星期练几次那种 先说下<海阔天空> 6,5,4,3 1,2,3,4 简单是简单得不得了,声从低到高,然后再从高到低,产生一种回 ...
- 扩大按钮 btn 响应区域
方法一:类别 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0 ...
- ST HW3
7. Use the following method printPrimes() for questions a-f below. /******************************** ...
- SEO-百度推出新算法如何应对
> 如何知道百度推出新算法百度推出算法的趋势> 学SEO目的做排名,长流量,赚钱> 最近一年百度搜索变动1> 2012年6月:6/22, 6/28事件,百度地震,4.5%网站被 ...
- Vuex 模块化实现待办事项的状态管理
前言 在vue里,组件之间的作用域是独立的,父组件跟子组件之间的通讯可以通过prop属性来传参,但是在兄弟组件之间通讯就比较麻烦了.比如A组件要告诉一件事给B组件,那么A就要先告诉他们的爸组件,然后爸 ...
- Rabbitmq 性能测试
背景: 线上环境,出了一起事故,初步定位是rabbitmq server. 通过抓包发现,是有多个应用使用同一台rabbitmq server.并且多个应用使用rabbitmq的方式也不一样.发现有以 ...