zoukankan      html  css  js  c++  java
  • 压缩算法1

    #region 压缩解压自符串

    public static string ZipString(string unCompressedString)
    {

    byte[] bytData = System.Text.Encoding.UTF8.GetBytes(unCompressedString);
    MemoryStream ms = new MemoryStream();
    Stream s = new GZipStream(ms, CompressionMode.Compress);
    s.Write(bytData, 0, bytData.Length);
    s.Close();
    byte[] compressedData = (byte[])ms.ToArray();
    return System.Convert.ToBase64String(compressedData, 0, compressedData.Length);
    }

    public static string UnzipString(string unCompressedString)
    {
    System.Text.StringBuilder uncompressedString = new System.Text.StringBuilder();
    byte[] writeData = new byte[4096];

    byte[] bytData = System.Convert.FromBase64String(unCompressedString);
    int totalLength = 0;
    int size = 0;

    Stream s = new GZipStream(new MemoryStream(bytData), CompressionMode.Decompress);
    while (true)
    {
    size = s.Read(writeData, 0, writeData.Length);
    if (size > 0)
    {
    totalLength += size;
    uncompressedString.Append(System.Text.Encoding.UTF8.GetString(writeData, 0, size));
    }
    else
    {
    break;
    }
    }
    s.Close();
    return uncompressedString.ToString();
    }

    //Demo
    //string abc = ZipString(txtCompressString.Text.Trim());
    //string Result = UnzipString(abc);

    #endregion

    #region 压缩解压数据集

    public static byte[] CompressionDataSet(DataSet dsOriginal)
    {
    if (dsOriginal == null) return null;
    dsOriginal.RemotingFormat = SerializationFormat.Binary;
    BinaryFormatter bFormatter = new BinaryFormatter();
    MemoryStream mStream = new MemoryStream();
    bFormatter.Serialize(mStream, dsOriginal);
    byte[] bytes = mStream.ToArray();
    MemoryStream oStream = new MemoryStream();
    DeflateStream zipStream = new DeflateStream(oStream, CompressionMode.Compress);
    zipStream.Write(bytes, 0, bytes.Length);
    zipStream.Flush();
    zipStream.Close();
    return oStream.ToArray();
    }

    public static DataSet DecompressionDataSet(byte[] bytes)
    {
    if (bytes == null) return null;
    MemoryStream mStream = new MemoryStream(bytes);
    mStream.Seek(0, SeekOrigin.Begin);
    DeflateStream unZipStream = new DeflateStream(mStream, CompressionMode.Decompress, true);
    DataSet dsResult = new DataSet();
    dsResult.RemotingFormat = SerializationFormat.Binary;
    BinaryFormatter bFormatter = new BinaryFormatter();
    dsResult = (DataSet)bFormatter.Deserialize(unZipStream);
    return dsResult;
    }

    //Demo
    //private void btnTest_Click(object sender, EventArgs e)
    //{
    // DataTable dt = new DataTable();
    // DataSet ds = new DataSet();
    // ds.Tables.Add(dt);
    // byte[] abc = CompressionDataSet(ds);
    // DataSet ss = DecompressionDataSet(abc);
    // string dd = "ok";
    //}


    #endregion

    #region 压缩解压文件

    public static void CompressFile(string sourceFile, string destinationFile)
    {
    if (!File.Exists(sourceFile)) throw new FileNotFoundException();
    FileStream sourceStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read);

    byte[] buffer = new byte[sourceStream.Length];
    int checkCounter = sourceStream.Read(buffer, 0, buffer.Length);
    if (checkCounter != buffer.Length) throw new ApplicationException();
    FileStream destinationStream = new FileStream(destinationFile, FileMode.OpenOrCreate, FileAccess.Write);

    using (GZipStream compressedStream = new GZipStream(destinationStream, CompressionMode.Compress, true))
    {
    compressedStream.Write(buffer, 0, buffer.Length);
    }
    }

    public static void DecompressFile(string sourceFile, string destinationFile)
    {
    if (!File.Exists(sourceFile)) throw new FileNotFoundException();
    FileStream sourceStream = new FileStream(sourceFile, FileMode.Open);

    byte[] quartetBuffer = new byte[4];
    int position = (int)sourceStream.Length - 4;
    sourceStream.Position = position;
    sourceStream.Read(quartetBuffer, 0, 4);
    sourceStream.Position = 0;
    int checkLength = BitConverter.ToInt32(quartetBuffer, 0);
    byte[] buffer = new byte[checkLength + 100];
    GZipStream decompressedStream = new GZipStream(sourceStream, CompressionMode.Decompress, true);
    int total = 0;
    for (int offset = 0; ; )
    {
    int bytesRead = decompressedStream.Read(buffer, offset, 100);
    if (bytesRead == 0) break;
    offset += bytesRead;
    total += bytesRead;
    }
    FileStream destinationStream = new FileStream(destinationFile, FileMode.Create);
    destinationStream.Write(buffer, 0, total);
    }

    //DEMO
    //private void btnCommpress_Click(object sender, EventArgs e)
    //{
    // string sourceFile = Application.StartupPath + @"\MTLOperatelog.txt";
    // string destinationFile = Application.StartupPath + @"\abc.rar";
    // CompressFile(sourceFile, destinationFile);
    //}

    //private void btnDecompressFile_Click(object sender, EventArgs e)
    //{
    // string sourceFile = Application.StartupPath + @"\abc.rar";
    // string destinationFile = Application.StartupPath + @"\abc.txt";
    // DecompressFile(sourceFile, destinationFile);
    //}


    #endregion

    #region 压缩解压Ilist

    public static byte[] CompressionArrayList(IList DataOriginal)
    {
    if (DataOriginal == null) return null;
    BinaryFormatter bFormatter = new BinaryFormatter();
    MemoryStream mStream = new MemoryStream();
    bFormatter.Serialize(mStream, DataOriginal);
    byte[] bytes = mStream.ToArray();
    MemoryStream oStream = new MemoryStream();
    DeflateStream zipStream = new DeflateStream(oStream, CompressionMode.Compress);
    zipStream.Write(bytes, 0, bytes.Length);
    zipStream.Flush();
    zipStream.Close();
    //
    return oStream.ToArray();
    }

    public static IList DecompressionArrayList(byte[] bytes)
    {
    if (bytes == null) return null;
    MemoryStream mStream = new MemoryStream(bytes);
    mStream.Seek(0, SeekOrigin.Begin);
    DeflateStream unZipStream = new DeflateStream(mStream, CompressionMode.Decompress, true);
    IList dsResult = null;
    BinaryFormatter bFormatter = new BinaryFormatter();
    dsResult = (IList)bFormatter.Deserialize(unZipStream);
    return dsResult;
    }
    #endregion

    #region 压缩解压object

    public static byte[] CompressionObject(object DataOriginal)
    {
    if (DataOriginal == null) return null;
    BinaryFormatter bFormatter = new BinaryFormatter();
    MemoryStream mStream = new MemoryStream();
    bFormatter.Serialize(mStream, DataOriginal);
    byte[] bytes = mStream.ToArray();
    MemoryStream oStream = new MemoryStream();
    DeflateStream zipStream = new DeflateStream(oStream, CompressionMode.Compress);
    zipStream.Write(bytes, 0, bytes.Length);
    zipStream.Flush();
    zipStream.Close();
    return oStream.ToArray();
    }

    public static object DecompressionObject(byte[] bytes)
    {
    if (bytes == null) return null;
    MemoryStream mStream = new MemoryStream(bytes);
    mStream.Seek(0, SeekOrigin.Begin);
    DeflateStream unZipStream = new DeflateStream(mStream, CompressionMode.Decompress, true);
    object dsResult = null;
    BinaryFormatter bFormatter = new BinaryFormatter();
    dsResult = (object)bFormatter.Deserialize(unZipStream);
    return dsResult;
    }
    #endregion

  • 相关阅读:
    soapui + groovy 接口自动化测试 第九章
    soapui + groovy 接口自动化测试 第八章
    soapui + groovy 接口自动化测试 第七章
    soapui + groovy 接口自动化测试 第六章
    soapui + groovy 接口自动化测试 第五章
    soapui + groovy 接口自动化测试 第四章
    soapui + groovy 接口自动化测试 第三章
    soapui + groovy 接口自动化测试 第二章
    Jekins
    ES6温习
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/nfngnfn.html
Copyright © 2011-2022 走看看