Compression.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. /// <summary>
  10. /// 压缩工具
  11. /// </summary>
  12. public static class Compression
  13. {
  14. /// <summary>
  15. /// 压缩字节
  16. /// 1.创建压缩的数据流
  17. /// 2.设定compressStream为存放被压缩的文件流,并设定为压缩模式
  18. /// 3.将需要压缩的字节写到被压缩的文件流
  19. /// </summary>
  20. /// <param name="bytes"></param>
  21. /// <returns></returns>
  22. public static byte[] Compress(byte[] bytes)
  23. {
  24. try
  25. {
  26. using (MemoryStream compressStream = new MemoryStream())
  27. {
  28. using (var zipStream = new GZipStream(compressStream, CompressionMode.Compress))
  29. zipStream.Write(bytes, 0, bytes.Length);
  30. return compressStream.ToArray();
  31. }
  32. }
  33. catch { return null; }
  34. }
  35. /// <summary>
  36. /// 解压缩字节
  37. /// 1.创建被压缩的数据流
  38. /// 2.创建zipStream对象,并传入解压的文件流
  39. /// 3.创建目标流
  40. /// 4.zipStream拷贝到目标流
  41. /// 5.返回目标流输出字节
  42. /// </summary>
  43. /// <param name="bytes"></param>
  44. /// <returns></returns>
  45. public static byte[] Decompress(byte[] bytes)
  46. {
  47. try
  48. {
  49. using (var compressStream = new MemoryStream(bytes))
  50. {
  51. using (var zipStream = new GZipStream(compressStream, CompressionMode.Decompress))
  52. {
  53. using (var resultStream = new MemoryStream())
  54. {
  55. zipStream.CopyTo(resultStream);
  56. return resultStream.ToArray();
  57. }
  58. }
  59. }
  60. }
  61. catch { return null; }
  62. }
  63. }
  64. }