| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.IO.Compression;
- using System.Linq;
- using System.Text;
- namespace CallCenter.Utility
- {
- public class GZip
- {
- /// <summary>
- /// 压缩
- /// </summary>
- /// <param name="text">文本</param>
- public static string Compress(string text)
- {
- if (string.IsNullOrWhiteSpace(text))
- return string.Empty;
- byte[] buffer = Encoding.UTF8.GetBytes(text);
- return Convert.ToBase64String(Compress(buffer));
- }
- /// <summary>
- /// 解压缩
- /// </summary>
- /// <param name="text">文本</param>
- public static string Decompress(string text)
- {
- if (string.IsNullOrWhiteSpace(text))
- return string.Empty;
- byte[] buffer = Convert.FromBase64String(text);
- using (var ms = new MemoryStream(buffer))
- {
- using (var zip = new GZipStream(ms, CompressionMode.Decompress))
- {
- using (var reader = new StreamReader(zip))
- {
- return reader.ReadToEnd();
- }
- }
- }
- }
- /// <summary>
- /// 压缩
- /// </summary>
- /// <param name="buffer">字节流</param>
- public static byte[] Compress(byte[] buffer)
- {
- if (buffer == null)
- return null;
- using (var ms = new MemoryStream())
- {
- using (var zip = new GZipStream(ms, CompressionMode.Compress, true))
- {
- zip.Write(buffer, 0, buffer.Length);
- }
- return ms.ToArray();
- }
- }
- /// <summary>
- /// 解压缩
- /// </summary>
- /// <param name="buffer">字节流</param>
- public static byte[] Decompress(byte[] buffer)
- {
- if (buffer == null)
- return null;
- return Decompress(new MemoryStream(buffer));
- }
- /// <summary>
- /// 压缩
- /// </summary>
- /// <param name="stream">流</param>
- public static byte[] Compress(Stream stream)
- {
- if (stream == null || stream.Length == 0)
- return null;
- return Compress(StreamToBytes(stream));
- }
- /// <summary>
- /// 解压缩
- /// </summary>
- /// <param name="stream">流</param>
- public static byte[] Decompress(Stream stream)
- {
- if (stream == null || stream.Length == 0)
- return null;
- using (var zip = new GZipStream(stream, CompressionMode.Decompress))
- {
- using (var reader = new StreamReader(zip))
- {
- return Encoding.UTF8.GetBytes(reader.ReadToEnd());
- }
- }
- }
- /// <summary>
- /// 流转换为字节流
- /// </summary>
- /// <param name="stream">流</param>
- public static byte[] StreamToBytes(Stream stream)
- {
- stream.Seek(0, SeekOrigin.Begin);
- var buffer = new byte[stream.Length];
- stream.Read(buffer, 0, buffer.Length);
- return buffer;
- }
- }
- }
|