zoukankan      html  css  js  c++  java
  • C# GZip Compress DeCompress

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO.Compression;
    using System.IO;
    using System.Diagnostics;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                DecompressDemo();
                Console.ReadLine();
            }                
            
            private static void CompressDemo()
            {
                string source = @"D:";
                string[] files = Directory.GetFiles(source, "*", SearchOption.AllDirectories);
                if(files!=null && files.Any())
                {
                    foreach(var file in files)
                    {
                        CompressFile(file);
                    }
                }                              
            }
            private static void CompressFile(string file)
            {
                Console.WriteLine($"Start to compress {file}");
                Stopwatch sw = new Stopwatch();
                sw.Start();
                string compressedFullName = Path.Combine(Path.GetDirectoryName(file), Path.GetFileNameWithoutExtension(file)) + ".zip";
                if (File.Exists(compressedFullName))
                {
                    File.Delete(compressedFullName);
                }
    
                Task compressTask = Task.Run(() =>
                {
                    using (FileStream fs = File.Open(file, FileMode.Open))
                    {
                        using (FileStream compressedFileStream = File.Create(compressedFullName))
                        {
                            using (GZipStream gZipStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
                            {
                                fs.CopyTo(gZipStream);
                            }
                        }
                    }
                });
    
                compressTask.Wait();
                sw.Stop();
                if (compressTask.IsCompleted)
                {
                    Console.WriteLine($"{file} has been compressed successfully,cost:{sw.ElapsedMilliseconds} ElapsedMilliseconds!");
                }
            }
            private static void DecompressDemo()
            {
                string source = @"D:";
                string[] compressedFiles = Directory.GetFiles(source, "*.zip");
                if (compressedFiles != null && compressedFiles.Any())
                {
                    foreach (var file in compressedFiles)
                    {
                        DecompressFile(file);
                    }
                }
            }
            private static void DecompressFile(string file)
            {
                Console.WriteLine($"Start to decompress {file}");
                Stopwatch decompressSW = new Stopwatch();
                decompressSW.Start();
    
                string newFileName = Path.Combine(Path.GetDirectoryName(file)) + Guid.NewGuid().ToString() + Path.GetFileNameWithoutExtension(file);
    
                Task decompressTask = Task.Run(() =>
                {                
                    using (FileStream fs = File.Open(file, FileMode.Open))
                    {
                        using (FileStream decompressedStream = File.Create(newFileName))
                        {
                            using (GZipStream gzipdecompressedStream = new GZipStream(fs, CompressionMode.Decompress))
                            {
                                gzipdecompressedStream.CopyTo(decompressedStream);
                            }
                        }
                    }
                });
    
                decompressTask.Wait();
                if(decompressTask.IsCompleted)
                {
                    decompressSW.Stop();
                    Console.WriteLine($"Decompress as {newFileName} cost {decompressSW.ElapsedMilliseconds} milliseconds");
                }           
            }
        }
    }
  • 相关阅读:
    php之面向对象(2)
    PHP ON 阿里云的环境配置攻略
    InitPHP框架搭建高可用WEB应用
    PHP移动互联网开发笔记(6)——MySQL数据库基础回顾[1]
    5 个不用 Bootstrap 的理由
    http中get与post的区别
    django的CSRF保护机制
    博客园项目开发中的难点
    centos7.5静态网页基于nginx建站(python3.6 mysql5.7 nginx安装以及配置)
    python3面向对象常用特性知识点
  • 原文地址:https://www.cnblogs.com/Fred1987/p/12083760.html
Copyright © 2011-2022 走看看