• C# deflatestream compress and decompress, compare their respective md5


    using System;
    using System.IO;
    using System.IO.Compression;
    using System.Security.Cryptography;
    using System.Text;
    
    
    static void Main(string[] args)
            {
                DeflateStreamDemo();
                Console.ReadLine();
            }
    
            static string fileName = "original.txt";
            static string compressFileName = "compressed.cmp";
            static string decompressFileName = "decompressed.txt";
            static void DeflateStreamDemo()
            {            
                using (FileStream fs = File.Create(fileName))
                {
                    StringBuilder builder = new StringBuilder(); 
                    for(int i=0;i<10000;i++)
                    {
                        builder.AppendLine("Everything depend on myself!");
                        builder.AppendLine("Actions speak lounder than words!");
                        builder.AppendLine("Implement the promise via vision and adamant execution!
    ");
                    }                
                    byte[] bytesData = Encoding.UTF8.GetBytes(builder.ToString());
                    fs.Write(bytesData, 0, bytesData.Length);
                }
                CompressFile(fileName);
                DecompressFile(compressFileName);
                ValidateOriginalAndDecompressed();
            }
    
            private static void CompressFile(string fileName)
            {
                using (FileStream originalStream = File.OpenRead(fileName))
                {
                    using (FileStream compressStream = File.Create(compressFileName))
                    {
                        using (DeflateStream ds = new DeflateStream(compressStream, CompressionMode.Compress))
                        {
                            originalStream.CopyTo(ds);
                        }
                    }
                }
            }
    
            static void DecompressFile(string compressedFile)
            {
                using(FileStream compressedStream=File.OpenRead(compressedFile))
                {
                    using(FileStream decompressStream=File.Create(decompressFileName))
                    {
                        using(DeflateStream ds=new DeflateStream(compressedStream, CompressionMode.Decompress))
                        {
                            ds.CopyTo(decompressStream);
                        }
                    }
                }
            }
    
            static void ValidateOriginalAndDecompressed()
            {
                string rawMd5 = string.Empty;
                string decompressMd5 = string.Empty;
                using (StreamReader reader=new StreamReader(fileName))
                {
                    string rawText = reader.ReadToEnd();
                    rawMd5 = GetStringMd5(rawText);
                }
    
                using(StreamReader reader=new StreamReader(decompressFileName))
                {
                    string decompressedText = reader.ReadToEnd();
                    decompressMd5 = GetStringMd5(decompressedText);
                }
    
                if(string.Equals(rawMd5,decompressMd5))
                {
                    Console.WriteLine("The identical!");
                }
                else
                {
                    Console.WriteLine("Error!");
                }
            }
    
            static string GetStringMd5(string str)
            {
                if(string.IsNullOrWhiteSpace(str))
                {
                    return null;
                }
                StringBuilder builder = new StringBuilder();     
                
                using(MD5 md5= MD5.Create())
                {
                    byte[] rawData = Encoding.UTF8.GetBytes(str);
                    byte[] md5Data = md5.ComputeHash(rawData);
                    for(int i=0;i<md5Data.Length;i++)
                    {
                        builder.Append(md5Data[i].ToString("x2"));
                    }
                }
                return builder.ToString();
            }
  • 相关阅读:
    HTML5新媒体元素
    概述
    (一)最小可行化应用
    JSON
    ajax的工作原理
    R语言学习笔记(四)
    R语言学习笔记(一)
    转:禅道的数据库结构
    转:bug的分类和等级
    转:如何定义 Bug 的优先级
  • 原文地址:https://www.cnblogs.com/Fred1987/p/13050986.html
Copyright © 2020-2023  润新知