[原]使用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(0, 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[2000];
    int len;
    while ((len = input.Read(buffer, 0, 2000)) > 0)
    {
        output.Write(buffer, 0, len);
    }
    output.Flush();
}
时间: 2024-10-18 11:24:09

[原]使用SevenZipSharp压缩/解压7z格式的相关文章

linux笔记:linux常用命令-压缩解压命令

压缩解压命令:gzip(压缩文件,不保留原文件.这个命令不能压缩目录) 压缩解压命令:gunzip(解压.gz的压缩文件) 压缩解压命令:tar(打包压缩目录或者解压压缩文件.打包的意思是把目录打包成一个文件,不等同于压缩.tar命令可以在打包的同时进行压缩,得到.tar.gz文件) 压缩解压命令:zip(压缩文件或者目录,会保留原文件) 压缩解压命令:unzip(解压.zip的压缩文件) 压缩解压命令:bzip2(压缩文件) 压缩解压命令:bunzip2(解压.bz2的文件)

Linux基本命令—权限管理、文件搜索、帮助、压缩解压、网络通信

Linux基本命令-权限管理.文件搜索.帮助.压缩解压.网络通信 Linux 权限管理命令 文件搜索命令 帮助命令 压缩解压命令 网络通信指令 2017-11-12 权限管理命令 chmod 改变文件或目录权限: 格式:chmod [{ugo} {+-=} {rwx}] [文件或目录]:或 [mode=421] [文件或目录] -u:所有者: -g:所属组: -o:其他人 -rwx:可读可写可执行:对应权值 r-4.w-2.x-1,可按照数字改变权限:eg.rwxr-xr--表示754: eg.

linux下各种文件压缩解压(转载)

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲tar命令的基本用法:  tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下:  # tar -cf all.tar *.jpg  这条命令是将所有.jpg的文件打成一个名为all.tar的包.-c是表示产生新的包 ,-f指定包的文件名.  # tar -

Centos压缩&解压

centos中的文件压缩与解压用得频率还是较大的,许多的压缩软件都是下载到linux系统上,然后解压安装,使用的是 tar 命令,这个命令又有主选项和辅助选项,这里就来总结一下吧,以方便自己的使用. Tar 语法:tar [主选项+辅选项] 文件或者目录 主选项: c 创建新的档案文件.如果用户想备份一个目录或是一些文件,就要选择这个选项.相当于打包. x 从档案文件中释放文件.相当于拆包. t 列出档案文件的内容,查看已经备份了哪些文件. 特别注意,在参数的下达中, c/x/t 仅能存在一个!

基于哈夫曼编码的压缩解压程序

这个程序是研一上学期的课程大作业.当时,跨专业的我只有一点 C 语言和数据结构基础,为此,我查阅了不少资料,再加上自己的思考和分析,实现后不断调试.测试和完善,耗时一周左右,在 2012/11/19 完成.虽然这是一个很小的程序,但却是我完成的第一个程序. 源码托管在 Github:点此打开链接 一.问题描述: 名称:基于哈夫曼编码的文件压缩解压 目的:利用哈夫曼编码压缩存储文件,节省空间 输入:任何格式的文件(压缩)或压缩文件(解压) 输出:压缩文件或解压后的原文件 功能:利用哈夫曼编码压缩解

linux命令之——压缩解压命令

linux命令之——压缩解压命令 命令名称:gzip 命令英文原意:GUN zip 命令所在路径:/bin/gzip 执行权限:所有用户 语法:gzip[文件] 功能描述:压缩文件(且只能压缩文件,不保存原文件) 压缩文件格式:.gz 范例: 压缩  :gzip boduo                      压缩后的文件格式为 boduo.gz 解压缩:gunzip boduo.gz            或者(gzip -d boduo.gz) ====================

Linux下常见压缩解压命令

inux zip命令 zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip unzip -o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/sunny/ -o:不提示的情况下覆盖文件: -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下: 3.其他 zip -d myfile.zip smart.txt 删

压缩解压命令小结

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲tar命令的基本用法: tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下: # tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包.-c是表示产生新的包 ,-f指定包的文件名. # tar -rf a

压缩解压打包工具基础

目录 前言 compress压缩解压工具 gzip压缩解压工具 bzip2压缩解压工具 xz压缩解压工具 zip压缩打包工具 tar打包工具 split文件分割 cpio打包压缩 前言 无论是我们的个人笔记本台式机还是服务器,它们的存储设备可以存储的东西都是有限的,不可能无限的存储东西,除非我们不停地增加硬盘的数量,但是这又是非常不现实的,因为我们需要无限的空间,很多时候我们需要存储大量的不可删除的数据时,就会采用压缩的方式,这样我们就可以即剩下了很多空间同时又保存了我们的文件. 在我们的常用的