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!\n"); } 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(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2019-06-05 C# NPOI Export DataTable C# NPOI导出DataTable 单元格自适应大小