using SevenZip;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SLibrary
{
public class SevenZipUtil
{
/// <summary>
/// 压缩字符串
/// </summary>
/// <param name="input">源字符串</param>
/// <returns>压缩后字节数组</returns>
public static byte[] Compress(string input)
{
byte[] compressed = null;
SevenZipCompressor compressor = new SevenZipCompressor();
compressor.CompressionMethod = CompressionMethod.Ppmd;
compressor.CompressionLevel = CompressionLevel.High;
using (MemoryStream msin = GetUTF8MemorySteam(input))
{
using (MemoryStream msout = new MemoryStream())
{
compressor.CompressStream(msin, msout); msout.Position = ;
compressed = new byte[msout.Length];
msout.Read(compressed, , compressed.Length);
/*
Console.WriteLine("compressed: ");
foreach (byte b in compressed)
{
Console.Write(b);
Console.Write(" ");
}
Console.WriteLine();
*/
}
}
return compressed;
} /// <summary>
/// 获取输入字符串的UTF8编码
/// </summary>
/// <param name="input">源字符串</param>
/// <returns>内存数据流</returns>
private static MemoryStream GetUTF8MemorySteam(string input)
{
MemoryStream ms = new MemoryStream();
byte[] bytes = Encoding.UTF8.GetBytes(input);
ms.Write(bytes, , bytes.Length);
return ms;
} /// <summary>
/// 解压字节数组
/// </summary>
/// <param name="input">源字节数组</param>
/// <returns>解压后字符串</returns>
public static string Decompress(byte[] input)
{
/*
Console.WriteLine("input:");
foreach (byte b in input)
{
Console.Write(b);
Console.Write(" ");
}
Console.WriteLine();
*/
byte[] uncompressedbuffer = null;
using (MemoryStream msin = new MemoryStream())
{
msin.Write(input, , input.Length);
uncompressedbuffer = new byte[input.Length];
msin.Position = ;
using (SevenZipExtractor extractor = new SevenZipExtractor(msin))
{
using (MemoryStream msout = new MemoryStream())
{
extractor.ExtractFile(, msout);
msout.Position = ;
uncompressedbuffer = new byte[msout.Length];
msout.Read(uncompressedbuffer, , uncompressedbuffer.Length);
}
}
}
return Encoding.UTF8.GetString(uncompressedbuffer);
} }
}

[压缩]C#下使用SevenZipSharp压缩解压文本的更多相关文章

  1. Linux tar (打包.压缩.解压缩)命令说明 | tar如何解压文件到指定的目录?

    打包举例:将 /usr/local/src/zlib-1.2.5目录下的文件打包成 zlib-1.2.5.tar.gz cd /usr/local/src tar -czvf ./zlib-1.2.5 ...

  2. ubuntu下各种压缩包的解压命令

    .tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)-------------------------- ...

  3. linux下rar包的解压方法

    linux下rar包的解压方法 学习了:https://blog.csdn.net/yonggeit/article/details/72190246?utm_source=itdadao&u ...

  4. Windows下安装zip包解压版mysql

    Windows下安装zip包解压版mysql 虽然官方提供了非常好的安装文件,但是有的时候不想每次再重装系统之后都要安装一遍MySQL,需要使用zip包版本的MySQL.在安装时需如下三步: 1. 新 ...

  5. linux下的三种解压文件的命令?

    那要看你的压缩文件使用哪种压缩方式:gzip,压缩文件名:zip或gz,解压命令:unzipbzip2,压缩文件名:bz,解压命令:bzip2 -d上面两个是最常用的压缩方式,一般在linux下可以通 ...

  6. Windows下MySQL8.0.13解压版安装教程

    下载 MySQL8.0.13-64位下载地址 在下载页面的底部,有三种安装包,第一种是MySQL的安装程序,下载完点击安装即可. 第二种是普通的压缩版,体积较小. 第三种是自带debug和测试的压缩版 ...

  7. Winserver2012下mysql 5.7解压版(zip)配置安装

    一.安装 下载mysqlzip版本mysql不需要运行可执行文件,解压即可,下载zip版本mysqlmsi版本mysql双击文件即可安装,相对简单,本文不介绍此版本安装 配置环境变量打开环境变量配置页 ...

  8. linux下tar.xz 文件解压

    在linux下下载源码文件安装时有些会遇到tar.xz文件的解压,习惯了tar解压缩,第一次遇到.xz文件还是有点迷惑,google 如下,解压这种格式的文件需要xz工具,如果xz工具没有安装,则安装 ...

  9. Win10下Mysql5.7.13,解压版安装流程

    一.环境变量配置 1.将下载好的压宿包解压到安装目录,我的安装目录就是:D:\DevelopmentTool\Mysql5.7.13\mysql-5.7.13-winx64 2.鼠标选择计算机右键,点 ...

随机推荐

  1. (Dos)/BAT命令入门与高级技巧详解(转)

    目录 第一章 批处理基础 第一节 常用批处理内部命令简介 1.REM 和 :: 2.ECHO 和 @ 3.PAUSE 4.ERRORLEVEL 5.TITLE 6.COLOR 7.mode 配置系统设 ...

  2. saltstack系列1之salt-api配置与使用

    salt-api salt-api是我们通过restful-api调用salt-master的接口,且调用的时候必须通过认证才能调用,认证的用户为系统用户,下面就说说如何配置salt-api. 不带S ...

  3. Winform窗体控件自适应大小

    自己写的winform窗体自适应大小代码,代码比较独立,很适合贴来贴去不会对原有程序造成影响,可以直接继承此类或者把代码复制到自己的代码里面直接使用 借鉴了网上的一些资料,最后采用重写WndProc方 ...

  4. UINavigationController popToViewController用法

    popToViewController用法  [self.navigationController popToViewController:[self.navigationController.vie ...

  5. orcle时间

    Oracle计算时间差函数 两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差 (分别以天,小时,分钟,秒,毫秒): 天: ROUND(TO_NUMBER(END_D ...

  6. Python 扩展知识

    Python 练习题 Python 编程习惯 Python 转义字符 Python 格式化输出 Python 列表表达式 Python 生成器表达式 Python 序列化 Python2 与 Pyth ...

  7. 编译poco-1.7.8

    运行build_vs140.cmd,运行之前可以修改一些参数,例如编译64位 buildwin 140 build shared both x64 nosamples notests devenv 修 ...

  8. Kafka producer介绍

    Kafka 0.9版本正式使用Java版本的producer替换了原Scala版本的producer.本文着重讨论新版本producer的设计原理以及基本的使用方法. 新版本Producer 首先明确 ...

  9. Mock

    转移到  这里 像测试对象提供一套和测试资源完全相同 的接口和方法,不关心过程,只关心结果(比如模拟拿到服务器的code)

  10. JSP基本用法(一)运行机制和语法

    一.概述 JSP是一种建立在Servlet规范功能上的动态网页技术,在网页文件中嵌入Java代码和JSP标记用于产生动态内容. 本文简单介绍JSP的运行机制和JSP的语法. 二.JSP的运行机制 JS ...