//使用DeflateStream压缩和解压缩文件

namespace 压缩流1
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream fs;
            DeflateStream deflate;
            FileInfo myFile;
            string originalXML = "original.xml";
            string compressedXML = "commpressed";
            string decompressedXML = "decommpressed.xml";
            DataSet ds = new DataSet();

myFile = new FileInfo(originalXML);
            Console.WriteLine("原文件{0}中包含{1}字节", myFile.Name, myFile.Length.ToString());
            ds.ReadXml(originalXML);
            //创建一个文件
            fs = new FileStream(compressedXML, FileMode.Create, FileAccess.Write);
            //对文件进行压缩
            deflate = new DeflateStream(fs, CompressionMode.Compress);
            //保存XML文件
            ds.WriteXml(deflate);
            //关闭流
            deflate.Close();

myFile = new FileInfo(compressedXML);
            Console.WriteLine("文件被压缩成{0}字节,存放在{1}中", myFile.Length.ToString(), myFile.Name);
            //创建一个文件
            fs = new FileStream(compressedXML, FileMode.Open, FileAccess.Read);
            //对文件进行解压
            deflate = new DeflateStream(fs, CompressionMode.Decompress);

ds = new DataSet();
            ds.ReadXml(deflate);
            ds.WriteXml(decompressedXML);

myFile = new FileInfo(decompressedXML);
            Console.WriteLine("文件被解压成{0}字节,存放在{1}中", myFile.Length.ToString(), myFile.Name);

Console.ReadLine();
        }
    }

//使用GZipStream压缩和解压缩文件,与上一个基本一样

using System.IO;
using System.IO.Compression;
using System.Data;

namespace 压缩流2
{
    class Program
    {
        static void Main(string[] args)
        {
            //GZipStream解压缩文件
            FileStream fs;
            GZipStream gzip;
            FileInfo myFile;
            string originalXML = "original.xml";
            string compressedXML = "originalGZip.gz";
            string decompressedXML = "UnZip.xml";
            DataSet ds = new DataSet();

myFile = new FileInfo(originalXML);
            Console.WriteLine("原文件{0}中包含{1}字节", myFile.Name, myFile.Length.ToString());
            ds.ReadXml(originalXML);

//压缩
            fs = new FileStream(compressedXML, FileMode.Create, FileAccess.Write);
            gzip = new GZipStream(fs, CompressionMode.Compress);
            ds.WriteXml(gzip);
            gzip.Close();

myFile = new FileInfo(compressedXML);
            Console.WriteLine("文件被压缩成{0}字节,存放在{1}中", myFile.Length.ToString(), myFile.Name);

fs = new FileStream(compressedXML, FileMode.Open, FileAccess.Read);
            gzip = new GZipStream(fs, CompressionMode.Decompress);

ds = new DataSet();
            ds.ReadXml(gzip);
            ds.WriteXml(decompressedXML);

myFile = new FileInfo(decompressedXML);
            Console.WriteLine("文件被解压成{0}字节,存放在{1}中", myFile.Length.ToString(), myFile.Name);
            Console.ReadLine();
        }
    }
}

转载于:https://www.cnblogs.com/zxktxj/archive/2012/04/09/2438997.html

压缩流--DeflateStream和GZipStream相关推荐

  1. 用DeflateStream和GZipStream压缩数据

    System.IO.Compression 命名空间提供两个类:DeflateStream和GZipStream,这两个类都可以实现数据压缩.这两个类采用都采用Deflate算法来进行无损数据压缩, ...

  2. ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流

    1.对象流 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File ...

  3. Java基础19:IO流—缓冲流、转换流、序列化、打印流、压缩流和解压流

    IO流中的一些其他流:缓冲流.转换流.序列化.打印流.压缩流和解压流 1. 缓冲流 IO流除了一些基本的流,还有在此基础上发展出来的一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够 ...

  4. java压缩流的用法_Java对压缩包的操作(解压缩)

    image 前言 如何用Java对文件进行加压和压缩 上篇文章说了项目中对根据URL提供的HTML代码中的文件URL进行下载,将下载后的文件存放在服务器上,但是文件下载下来都是ZIP压缩包.那么这篇就 ...

  5. [Java]Swing窗体演示ZIP压缩流的压缩与解压

    最近开始学习java,然后学完了Swing和各种流后,试着写了个ZIP的压缩解压软件出来,具体代码如下: 压缩准备部分: String path = ja.getText();//获取文本域内容Str ...

  6. 《果壳中的C# C# 5.0 权威指南》 (09-26章) - 学习笔记

    <果壳中的C# C# 5.0 权威指南> ========== ========== ========== [作者] (美) Joseph Albahari (美) Ben Albahar ...

  7. .NET Core/.NET之Stream简介

    之前写了一篇C#装饰模式的文章用.NET Core实现装饰模式和.NET Core的Stream简介 提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) ...

  8. java zip 流压缩_关于zip:检测流是否用Java压缩的最佳方法

    找出i java.io.InputStream包含压缩数据的最佳方法是什么? 这是HTTP请求/响应的一部分吗? 介绍 由于所有答案都存在5年之久,因此我有责任写下来,这是怎么回事.我严重怀疑应该读取 ...

  9. [重学Java基础][Java IO流][Exter.1]Apache Commonms Compress压缩工具包

    Apache Commons Compress 简介 Apache Commons Copress是 Apache Commons系列工具的一个部分 是一个提供了更丰富的压缩功能和支持更多压缩格式的工 ...

最新文章

  1. 奶牛异或(01字典树)
  2. 深度|2030年8亿人会失业!图解机器人如何取代你的工作
  3. VMware虚拟化技术培训(11) 小结
  4. 网上的一篇spring security详解教程,觉得不错,转过来了
  5. ubuntu16安装pylearn2 出现错误提示importerror:no module named six.moves
  6. 实现input框的全选和清空
  7. [蓝桥杯][历届试题]国王的烦恼(反向+并查集)
  8. 一直想说的,技术职业化
  9. 天天有毒_鸡汤文案类小程序源码
  10. es实现近实时搜索推荐的两种方式
  11. 国内交易平台关闭了,教你如何把Zcash(zec)兑换成人民币
  12. 路径规划算法1.3抽样算法——PRM与RRT算法
  13. 软件著作权申请流程(2021版)
  14. 记录一丢丢自己在用FileTransfer和FileOpener2实现自动更新下载安装apk时候踩的坑
  15. 德芙网络营销策略ppt_德芙网络营销案例ppt采集
  16. 大学学python用记笔记吗_Python 应该怎么学?
  17. 基于MATLAB的运动目标检测解析
  18. matlab rand函数解释,matlab rand()函数五种用法
  19. JeecgBoot新增一个module
  20. 【24位IEPE振动加速度音频采集卡-北京阿尔泰科技】

热门文章

  1. Given an integer, write a function to determine if it is a power of two
  2. UDP实现全双工聊天(聊天工具进阶)pyhton
  3. python下载m3u8地址_python 下载m3u8视频的示例代码
  4. python学习之内置函数(二)
  5. 博弈论 斯坦福game theory stanford week 5.0_
  6. Python 操作 MySQL 的正确姿势
  7. Android设置布局背景为白色的三种方法
  8. HDOJ 3709 Balanced Number
  9. MySQL 5.5.19 GA 发布 修复多个Bug
  10. MS Vs.net 2003 Sp1发布!