解压和压缩反写快照和业务流程实例压缩文件原创
金蝶云社区-eris
eris
3人赞赏了该文章 1000次浏览 未经作者许可,禁止转载编辑于2022年09月14日 10:24:43

反写快照数据新版本或归档的数据都进行了压缩,业务流程实例数据归档到文件表中也进行了压缩;

如果需要解压可以使用下面代码,或在线解压

1、xml格式化

2、在线解压

3、解压代码:


using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
namespace ConsoleTest
{
    public class Program 
    {
        public static void Main(string[] args)
        {
        //解压压缩字符
          string  str="H4sIAAAAAAAEAMVUXWuDMBT9K/sBzRKtiQpBkK2ygq0u2o0+iSaBltkPbLn.....";    //压缩字符
           byte[] base64Bytes = Convert.FromBase64String(str);
           byte[] bytes = null;
           using (MemoryStream tempMs = new MemoryStream())
           {
               using (MemoryStream ms = new MemoryStream(base64Bytes))
                {
                    GZipStream Decompress = new GZipStream(ms, CompressionMode.Decompress);
                    Decompress.CopyTo(tempMs);
                    Decompress.Close();
                    bytes = tempMs.ToArray();
                }
            }
            string oldStr = Encoding.Default.GetString(bytes);  // 还原为字符串
            
            //把字符压缩
            var  oldStr="<Sheet><Rows><Row><Id><Id><Tbl>T_SAL_ORDERENTRY</Tbl><EId>12....."
             byte[] bytes1 = Encoding.Default.GetBytes(oldStr);   // 把字符串,转换为byte[]
            string base64str = Convert.ToBase64String(bytes1);          // 把字符串,换为base64字符串 
            byte[] base64Bytes2 = Convert.FromBase64String(base64str);      // 把base64字符串,重新转换为byte[],以便压缩
            using (MemoryStream ms = new MemoryStream())
            {
                GZipStream Compress = new GZipStream(ms, CompressionMode.Compress);
                Compress.Write(base64Bytes2, 0, base64Bytes2.Length);
                Compress.Close();
                string compressStr = Convert.ToBase64String( ms.ToArray());
            }
         }
    }
}



赞 3