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

时间:2022-01-27 09:48:49 

如下所示:


        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);
                    }
                }
            }
        }
标签:Deflate算法,压缩,解压缩
0
投稿

猜你喜欢

  • Spring AOP如何整合redis(注解方式)实现缓存统一管理详解

    2023-11-19 06:09:27
  • Java线程池并发执行多个任务方式

    2023-08-14 16:26:03
  • c#图片处理之图片裁剪成不规则图形

    2023-02-23 02:43:58
  • Java聊天室之实现接收和发送Socket

    2021-06-24 23:30:39
  • C#实现对文件进行加密保护的示例代码

    2023-05-21 13:06:21
  • Android:Field can be converted to a local varible.的解决办法

    2022-01-23 16:53:14
  • Gradle学习教程之部署上传项目详解

    2023-08-08 20:46:46
  • 对C# 多态的理解

    2022-10-17 02:37:26
  • springboot aspect通过@annotation进行拦截的实例代码详解

    2023-10-15 20:12:54
  • 详解SHA-256算法的原理以及C#和JS的实现

    2023-07-01 15:49:58
  • C#实现关闭子窗口而不释放子窗口对象的方法

    2022-09-11 12:41:02
  • Java中的同步与异步详细介绍

    2023-06-23 00:42:08
  • Android实现简易计步器功能隔天步数清零查看历史运动纪录

    2021-07-24 00:37:02
  • Java获得当前时间前指定几个小时具体时间的方法示例

    2023-11-24 04:56:49
  • java8 实现提取集合对象的每个属性

    2023-10-17 19:37:27
  • 解决SpringMVC项目连接RabbitMQ出错的问题

    2022-12-22 13:05:51
  • java eclipse 中文件的上传和下载示例解析

    2021-11-18 06:55:58
  • Mybatis 逆向工程的三种方法详解

    2023-08-10 22:27:20
  • 使用Flutter实现一个走马灯布局的示例代码

    2023-06-19 03:50:03
  • Android ToolBar整合实例使用方法详解

    2023-04-05 07:27:53
  • asp之家 软件编程 m.aspxhome.com