使用Deflate算法对文件进行压缩与解压缩的方法详解

如下所示:


代码如下:

static void Main()
        {
            string path = @"D:\Practise\IO\Compress";
            string deCompressPath = @"D:\Practise\IO\DeCompress";
            DirectoryInfo dir = new DirectoryInfo(path);
            foreach (FileInfo fi in dir.GetFiles())
            {
                Compress(fi);
            }
            foreach (FileInfo fi in dir.GetFiles("*.cmp"))
            {
                DeCompress(fi, deCompressPath);
            }
        }
        public static void Compress(FileInfo fi)
        {
            using (FileStream fs = fi.OpenRead())
            {
                if (fi.Attributes != FileAttributes.Hidden & fi.Extension != ".cmp")
                {
                    using (FileStream compressfile = new FileStream(fi.FullName + ".cmp", FileMode.Create, FileAccess.ReadWrite))
                    {
                        using (DeflateStream ds = new DeflateStream(compressfile, CompressionMode.Compress))
                        {
                            fs.CopyTo(ds);
                            Console.WriteLine("This File {0} has been Compressed to {1}",fi.Name,compressfile.Name);
                        }
                    }
                }
            }
        }
        public static void DeCompress(FileInfo fi, string desination)
        {
            using (FileStream fs = fi.OpenRead())
            {
                string deCompressFile = fi.Name.Remove(fi.Name.Length - fi.Extension.Length);
                using (FileStream deCompressFS = new FileStream(Path.Combine(desination, deCompressFile), FileMode.Create, FileAccess.ReadWrite))
                {
                    using (DeflateStream ds = new DeflateStream(fs, CompressionMode.Decompress))
                    {
                        ds.CopyTo(deCompressFS);
                        Console.WriteLine("This file {0} has been Decompressd", fi.Name);
                    }
                }
            }
        }

(0)

相关推荐

  • C#实现页面GZip或Deflate压缩的方法

    本文实例讲述了C#实现页面GZip或Deflate压缩的方法.分享给大家供大家参考.具体分析如下: .NET Framework里 System.IO.Compression下有两个可用于页面压缩的类,GZipStream和 DeflateStream. 在页面被传输之前,需要获取发出请求的客户端所采用的解码形式. 可以通过Request.Headers["Accept-Encoding"]来获取. 在页面被压缩之前,需要获取页面实体主体,可通过 Response.Filter来获取(

  • JAVA中的deflate压缩实现方法

    在文件的传输过程中,为了使大文件能够更加方便快速的传输,一般采用压缩的办法来对文件压缩后再传输,JAVA中的java.util.zip包中的Deflater和Inflater类为使用者提供了DEFLATE算法的压缩功能,以下是自已编写的压缩和解压缩实现,并以压缩文件内容为例说明,其中涉及的具体方法可查看JDK的API了解说明. /** * * @param inputByte * 待解压缩的字节数组 * @return 解压缩后的字节数组 * @throws IOException */ pub

  • 使用Deflate算法对文件进行压缩与解压缩的方法详解

    如下所示: 复制代码 代码如下: static void Main()        {            string path = @"D:\Practise\IO\Compress";            string deCompressPath = @"D:\Practise\IO\DeCompress";            DirectoryInfo dir = new DirectoryInfo(path);            forea

  • C语言实现短字符串压缩的三种方法详解

    目录 前言 一.通用算法的短字符压缩 二.短字符串压缩 (1)Smaz (2)Shoco (3)Unisox2 三.总结 前言 上一篇探索了LZ4的压缩和解压性能,以及对LZ4和ZSTD的压缩.解压性能进行了横向对比.文末的最后也给了一个彩蛋:任意长度的字符串都可以被ZSTD.LZ4之类的压缩算压缩得很好吗? 本篇我们就来一探究竟. 一.通用算法的短字符压缩 开门见山,我们使用一段比较短的文本:Narrator: It is raining today. So, Peppa and George

  • C#实现文件与字符串互转的方法详解

    目录 实现功能 开发环境 实现代码 实现效果 嗯,就是BASE64,不用多想,本来计划是要跟上一篇字符串压缩一起写的,用来实现将一个文件可以用json或者text等方式进行接口之间的传输,为了保证传输效率,所以对生成的字符串进行进一步压缩.但是由于不能上传完整源代码,所以就还是分开写了,方便展示实现效果以及功能的单独使用. 实现功能 将文件与为字符串互转 开发环境 开发工具: Visual Studio 2013 .NET Framework版本:4.5 实现代码 //选择文件路径 privat

  • 对Pycharm创建py文件时自定义头部模板的方法详解

    如下所示: # -*- coding: utf-8 -*- """ ------------------------------------------------- File Name: ${NAME} Description : Author : ${USER} date: ${DATE} ------------------------------------------------- Change Activity: ${DATE}: ----------------

  • Python实现从文件中加载数据的方法详解

    前几篇都是手动录入或随机函数产生的数据.实际有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化. 比如之前python基础(12)介绍打开文件的方式,可直接读取文件中的数据,扩大了我们的数据来源.下面,将展示几种方法. 我们将使用内置的 csv 模块加载CSV文件 CSV文件是一种特殊的文本文件,文件中的数据以逗号作为分隔符,很适合进行数据的解析.先用excle建立如下表格和数据,另存为csv格式文件,放到代码目录下. 包含在Python标准库中自带CSV 模块,我们只需要impor

  • Java实现大文件的分割与合并的方法详解

    目录 一.题目描述-合并多个文本文件 1.题目 2.解题思路 3.代码详解 二.题目描述-对大文件进行分割处理 1.题目 2.解题思路 3.代码详解 三.题目描述-分割后又再次合并 1.题目 2.解题思路 3.代码详解 4.多学一个知识点 一.题目描述-合并多个文本文件 1.题目 题目:做一个合并多个文本文件的工具. 2.解题思路 创建一个类:TextFileConcatenation 使用TextFileConcatenation继承JFrame构建窗体 读取文本文件时,用的是Buffered

  • Java实现文件上传和下载的方法详解

    目录 1.文件上传 1.1 介绍 1.2 代码实现 2.下载 2.1 介绍 2.2 代码实现 1.文件上传 1.1 介绍 文件上传,也称为upload,是指将本地图片.视频.音频等文件上传到服务器上,可以供其他用户浏览或下载的过程.文件上传在项目中应用非常广泛,我们经常发微博.发微信朋友圈都用到了文件上传功能. 文件上传时,对页面的form表单有如下要求: 表单属性 取值 说明 method post 必须选择post方式提交 enctype multipart/form-data 采用mult

  • JS 图片压缩原理与实现方法详解

    本文实例讲述了JS 图片压缩原理与实现方法.分享给大家供大家参考,具体如下: 前言 说起图片压缩,大家想到的或者平时用到的很多工具都可以实现,例如,客户端类的有图片压缩工具 PPDuck3, JS 实现类的有插件 compression.js ,亦或是在线处理类的 OSS 上传,文件上传后,在访问文件时中也有图片的压缩配置选项,不过,能不能自己撸一套 JS 实现的图片压缩代码呢?当然可以,那我们先来理一下思路. 压缩思路 涉及到 JS 的图片压缩,我的想法是需要用到 Canvas 的绘图能力,通

  • Java文件上传与文件下载实现方法详解

    本文实例讲述了Java文件上传与文件下载实现方法.分享给大家供大家参考,具体如下: Java文件上传 数据上传是客户端向服务器端上传数据,客户端向服务器发送的所有请求都属于数据上传.文件上传是数据上传的一种特例,指客户端向服务器上传文件.即将保存在客户端的文件上传一个副本到服务器,并保存在服务器中. 1.上传表单要求 文件上传要求客户端提交特殊的请求--multipart请求,即包含多部分数据的请求.必须将<form/>标签的enctype属性值设为"multipart/form-d

  • php文件上传原理与实现方法详解

    本文实例讲述了php文件上传原理与实现方法.分享给大家供大家参考,具体如下: 文件上传实际上就是在前段使用一个form表单提交本地文件到服务器,然后在服务器端将文件从临时目录转移到指定目录的过程. 1.php配置文件 php.ini文件中的file uploads部分定义了相关文件上传配置, file_uploads = On 打开文件上传 upload_tmp_dir =临时目录 upload_max_filesize = 2M最大上传大小 max_file_uploads = 20单次最大上

随机推荐