GzipStream的简单使用压缩和解压
压缩和解压都需要用到三个流实例,分别是文件读取流、文件写入流、压缩流。
读取流和写入流有多种形式,压缩流就一种GzipStream。
不同的是对于压缩,是需要用文件写入流作为创建压缩流实例的参数,
压缩时是通过文件读取流读取文件,压缩流写入文件,这样就完成了压缩。
解压,是需要用文件读取流为参数创建压缩流实例,
通过压缩读取流读取文件,再通过文件写入流写入文件,这样就完成了解压。
这里解析一个枚举CompressionMode,它有两个值分别是Compress、DeCompress。
表示压缩和解压,在创建压缩流实例的时候会用到。
代码解析
压缩
//1.创建读取文本文件的流
using (FileStream fsRead = File.OpenRead("1.txt"))
{
//2.创建写文件流
using (FileStream fsWrite = File.OpenWrite(@"C:\Users\john\Desktop\yasuo.rar"))
{
//3.创建压缩流
using (GZipStream zipStream = new GZipStream(fsWrite, CompressionMode.Compress))
{
byte[] byts = new byte[1024];
int len = 0;
//4.通过读取文件流读取数据
while ((len = fsRead.Read(byts, 0, byts.Length)) > 0)
{ //通过压缩流写入数据
zipStream.Write(byts, 0, len); }
}
}
}
解压
//1.创建读取流
using (FileStream fsRead = File.OpenRead(@"C:\Users\john\Desktop\yasuo.rar"))
{
//2.创建压缩流,把读取流作为参数,
using (GZipStream zip = new GZipStream(fsRead, CompressionMode.Decompress))
{
//创建写入流
using (FileStream fsWrite=File.OpenWrite(@"C:\Users\john\Desktop\1.txt"))
{
byte[] byts = new byte[];
int len = ;//用于表示真是接受到是字节个数
//通过压缩流读取数据
while ((len=zip.Read(byts,,byts.Length))>)
{
//MessageBox.Show(Encoding.UTF8.GetString(byts.Take(len).ToArray()));
//通过文件流写入文件
fsWrite.Write(byts, , len);//读取的长度为len,这样不会造成数据的错误
}
}
} }
GzipStream的简单使用压缩和解压的更多相关文章
- ruby利用Zip Gem写一个简单的压缩和解压的小工具
在UNIX下的我们怎么会沦落到用ruby写压缩和解压工具呢?直接上shell啊!但是请允许本猫这次可耻的用ruby来玩玩吧!其实ruby GEM中有很多压缩解压包,我选的是Zip,也许是因为名字符合K ...
- 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货
关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...
- 文件压缩和解压 FileStream GZipStream
using (FileStream reader=new FileStream (@"c:\1.txt",FileMode.Open,FileAccess.Read)) { usi ...
- 黄聪:.NET中zip的压缩和解压——SharpCompress
使用Packaging无法实现通用的zip(使用其他工具压缩)的解压,只支持通过Packaging压缩包zip的解压,而SharpZipLib是基于“GPL”开源方式,风险比较大.在codeplex找 ...
- java 文件压缩和解压(ZipInputStream, ZipOutputStream)
最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还 ...
- C#实现通过Gzip来对数据进行压缩和解压
C#实现通过Gzip来对数据进行压缩和解压 internal static byte[] Compress(byte[] data) { using (var compressedStream = n ...
- .net文件压缩和解压及中文文件夹名称乱码问题
/**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...
- C#对文件操作(基本的读写以及压缩和解压)
主要是针对单个文件进行读写操作和压缩操作:用到的主要C#类有FileStream.FileInfo.StreamWrite.StreamRead.GZipStream. 字符数组和字节数组的转换: ] ...
- VB6进行GZIP解压&C#进行GZIP压缩和解压
VB进行GZIP解压的,DLL是系统的,如果没有 [点击下载] Option Explicit 'GZIP API '----------------------------------------- ...
随机推荐
- iOS 9和xcode7设置
升级了Xcode7各种问题来了,折腾两天 一.Xcode7 http适配设置 1.大部分社交平台接口不支持https协议. 2.大部分社交平台SDK不支持bitcode. 3.添加Scheme白名单 ...
- log4erl Configuration
https://github.com/ahmednawras/log4erl/blob/master/CONFIGURATION.txt Configuration Guide: ========== ...
- JSP 九大内置对象(转)
九大对象: 内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 out: javax.servlet.jsp.JspWriter类型,代表输出流的对象.作用域为 ...
- CentOS 挂载iso文件配置yum源
1.挂载iso 准备好centos的光盘镜像 挂载前的准备; mkdir -p /dev/centos mkdir -p /mnt/local_yum 挂载 mount -o loop /opt/s ...
- docker入门0:常识知识扫盲
Docker 是一个开源项目,基于 Go 语言实现,是一套轻量级的操作系统虚拟化解决方案.用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单. Docker通常用于如下场景: web ...
- Network Function Virtualization for a Network Device
An apparatus for performing network function virtualization (NFV), comprising: a memory, a processor ...
- 用ORACHK自己主动化检查数据库系统的健壮性
1.orachk工具主要用途 (1)主动检查您的整个软件在操作系统.CRS.数据库.高可用等层面中的严重问题,以便于IT部门整改,提升系统的稳定性 (2)对于您系统中存在的风险提供简单化和合理化的诊断 ...
- C++:怎样把一个int转成4个字节?
大家都知道,一个int 或 unsigned int是由4个字节组成的,(<C/C++学习指南>,第3章,第3.2.3节:变量的内存视图) 比如, int n = sizeof( ...
- Bootstrap Button 使用方法
Getting Started <!-- basic button --> <com.beardedhen.androidbootstrap.BootstrapButton andr ...
- 【转载】MySQL双主双从高可用集群架构
双浮动VIP 原文地址:http://www.linuxcache.com/archives/2907 转载请注明原文地址.