Compression.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.IO.Compression;
  5. using System.Linq;
  6. using System.Text;
  7. namespace Azylee.Core.DataUtils.CompressionUtils
  8. {
  9. public static class Compression
  10. {
  11. //压缩字节
  12. //1.创建压缩的数据流
  13. //2.设定compressStream为存放被压缩的文件流,并设定为压缩模式
  14. //3.将需要压缩的字节写到被压缩的文件流
  15. public static byte[] Compress(byte[] bytes)
  16. {
  17. try
  18. {
  19. using (MemoryStream compressStream = new MemoryStream())
  20. {
  21. using (var zipStream = new GZipStream(compressStream, CompressionMode.Compress))
  22. zipStream.Write(bytes, 0, bytes.Length);
  23. return compressStream.ToArray();
  24. }
  25. }
  26. catch { return null; }
  27. }
  28. //解压缩字节
  29. //1.创建被压缩的数据流
  30. //2.创建zipStream对象,并传入解压的文件流
  31. //3.创建目标流
  32. //4.zipStream拷贝到目标流
  33. //5.返回目标流输出字节
  34. public static byte[] Decompress(byte[] bytes)
  35. {
  36. try
  37. {
  38. using (var compressStream = new MemoryStream(bytes))
  39. {
  40. using (var zipStream = new GZipStream(compressStream, CompressionMode.Decompress))
  41. {
  42. using (var resultStream = new MemoryStream())
  43. {
  44. zipStream.CopyTo(resultStream);
  45. return resultStream.ToArray();
  46. }
  47. }
  48. }
  49. }
  50. catch { return null; }
  51. }
  52. }
  53. }