You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
using ICSharpCode.SharpZipLib.BZip2;
|
|
|
|
|
using Org.BouncyCastle.Utilities.Bzip2;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace DS.Module.Core.Extensions
|
|
|
|
|
{
|
|
|
|
|
public class SharpZipLib
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 数据压缩
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="input"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static string Compress(string input)
|
|
|
|
|
{
|
|
|
|
|
string result = string.Empty;
|
|
|
|
|
byte[] buffer = Encoding.UTF8.GetBytes(input);
|
|
|
|
|
using (MemoryStream outputStream = new MemoryStream())
|
|
|
|
|
{
|
|
|
|
|
using (BZip2OutputStream zipStream = new BZip2OutputStream(outputStream))
|
|
|
|
|
{
|
|
|
|
|
zipStream.Write(buffer, 0, buffer.Length);
|
|
|
|
|
zipStream.Close();
|
|
|
|
|
}
|
|
|
|
|
return Convert.ToBase64String(outputStream.ToArray());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 数据解压缩
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="input"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static string Decompress(string input)
|
|
|
|
|
{
|
|
|
|
|
string result = string.Empty;
|
|
|
|
|
byte[] buffer = Convert.FromBase64String(input);
|
|
|
|
|
using (Stream inputStream = new MemoryStream(buffer))
|
|
|
|
|
{
|
|
|
|
|
BZip2InputStream zipStream = new BZip2InputStream(inputStream);
|
|
|
|
|
|
|
|
|
|
using (StreamReader reader = new StreamReader(zipStream, Encoding.UTF8))
|
|
|
|
|
{
|
|
|
|
|
//输出
|
|
|
|
|
result = reader.ReadToEnd();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|