• CompressHelper


    
    namespace Microshaoft
    {
        using System;
        using System.Text;
        using System.IO;
        using System.IO.Compression;
        public class CompressHelper
        {
            public static byte[] ReadStreamToBytes(Stream stream)
            {
                byte[] buffer = new byte[64 * 1024];
                int r = 0;
                int l = 0;
                long position = -1;
                if (stream.CanSeek)
                {
                    position = stream.Position;
                    stream.Position = 0;
                }
                MemoryStream ms = new MemoryStream();
                while (true)
                {
                    r = stream.Read(buffer, 0, buffer.Length);
                    if (r > 0)
                    {
                        l += r;
                        ms.Write(buffer, 0, r);
                    }
                    else
                    {
                        break;
                    }
                }
                byte[] bytes = new byte[l];
                ms.Position = 0;
                ms.Read(bytes, 0, (int) l);
                ms.Close();
                ms = null;
                if (position >= 0)
                {
                    stream.Position = position;
                }
                return bytes;
            }
            public static byte[] GZipCompress(byte[] DATA)
            {
                MemoryStream ms = new MemoryStream();
                GZipStream stream = new GZipStream(ms, CompressionMode.Compress, true);
                stream.Write(DATA, 0, DATA.Length);
                stream.Close();
                stream.Dispose();
                stream = null;
                byte[] buffer = ReadStreamToBytes(ms);
                ms.Close();
                ms.Dispose();
                ms = null;
                return buffer;
            }
            public static byte[] GZipDecompress(byte[] data)
            {
                MemoryStream ms = new MemoryStream(data);
                GZipStream stream = new GZipStream(ms, CompressionMode.Decompress);
                byte[] buffer = ReadStreamToBytes(stream);
                ms.Close();
                ms.Dispose();
                ms = null;
                stream.Close();
                stream.Dispose();
                stream = null;
                return buffer;
            }
            public static Stream GZipCompress(Stream DATA)
            {
                byte[] buffer = ReadStreamToBytes(DATA);
                MemoryStream ms = new MemoryStream();
                GZipStream stream = new GZipStream(ms, CompressionMode.Compress, true);
                stream.Write(buffer, 0, buffer.Length);
                stream.Close();
                stream.Dispose();
                stream = null;
                if (ms.CanSeek)
                {
                    ms.Position = 0;
                }
                return ms;
            }
            public static Stream GZipDecompress(Stream data)
            {
                byte[] buffer = ReadStreamToBytes(data);
                MemoryStream ms = new MemoryStream(buffer);
                GZipStream stream = new GZipStream(ms, CompressionMode.Decompress);
                if (stream.CanSeek)
                {
                    stream.Position = 0;
                }
                return stream;
            }
            public static byte[] DeflateCompress(byte[] DATA)
            {
                MemoryStream ms = new MemoryStream();
                DeflateStream stream = new DeflateStream(ms, CompressionMode.Compress, true);
                stream.Write(DATA, 0, DATA.Length);
                stream.Close();
                stream.Dispose();
                stream = null;
                byte[] buffer = ReadStreamToBytes(ms);
                ms.Close();
                ms.Dispose();
                ms = null;
                return buffer;
            }
            public static byte[] DeflateDecompress(byte[] data)
            {
                MemoryStream ms = new MemoryStream(data);
                DeflateStream stream = new DeflateStream(ms, CompressionMode.Decompress);
                byte[] buffer = ReadStreamToBytes(stream);
                ms.Close();
                ms.Dispose();
                ms = null;
                stream.Close();
                stream.Dispose();
                stream = null;
                return buffer;
            }
            public static Stream DeflateCompress(Stream DATA)
            {
                byte[] buffer = ReadStreamToBytes(DATA);
                MemoryStream ms = new MemoryStream();
                DeflateStream stream = new DeflateStream(ms, CompressionMode.Compress, true);
                stream.Write(buffer, 0, buffer.Length);
                stream.Close();
                stream.Dispose();
                stream = null;
                if (ms.CanSeek)
                {
                    ms.Position = 0;
                }
                return ms;
            }
            public static Stream DeflateDecompress(Stream data)
            {
                byte[] buffer = ReadStreamToBytes(data);
                MemoryStream ms = new MemoryStream(buffer);
                DeflateStream stream = new DeflateStream(ms, CompressionMode.Decompress);
                if (stream.CanSeek)
                {
                    stream.Position = 0;
                }
                return stream;
            }
        }
    }
    namespace TestConsoleApplication
    {
        using System.Text;
        using System;
        using System.IO;
        using Microshaoft;
        /// <summary>
        /// Class1 的摘要说明。
        /// </summary>
        public class Class1
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            //[STAThread]
            static void Main(string[] args)
            {
                //
                // TODO: 在此处添加代码以启动应用程序
                //
                Console.WriteLine("Hello World");
                Console.WriteLine(Environment.Version.ToString());
                string s = "阿斯个贷哈根室电话个撒谎干大事个贷伽师将阿斯个贷哈根室电话个撒谎干大事个贷伽师将事个贷伽师将事个贷伽师将事个贷伽师将事个贷伽师将事个贷伽师将事个贷伽师将事个贷伽师将";
                byte[] buffer = Encoding.UTF8.GetBytes(s);
                byte[] bytes;
                bytes = CompressHelper.GZipCompress
                                        (
                                            buffer
                                        );
                Console.WriteLine
                            (
                                "{0},GZip: {1}; {2}"
                                , buffer.Length
                                , bytes.Length
                                , s.Length
                            );
                //bytes = CompressHelper.ReadStreamToBytes(ms);
                //string ss = Encoding.UTF8.GetString(bytes);
                Stream ms = new MemoryStream(bytes);
                //ms.Write(bytes, 0, bytes.Length);
                ms.Position = 0;
                ms = CompressHelper.GZipDecompress
                            (
                                ms
                            );
                bytes = CompressHelper.ReadStreamToBytes(ms);
                string ss = Encoding.UTF8.GetString(bytes);
                Console.WriteLine(ss);
                bytes = CompressHelper.DeflateCompress
                                    (
                                        buffer
                                    );
                Console.WriteLine
                            (
                                "{0},Deflate: {1}; {2}"
                                , buffer.Length
                                , bytes.Length
                                , s.Length
                            );
                //Console.WriteLine("{0},Deflate: {1}", buffer.Length, bytes.Length);
                ss = Encoding.UTF8.GetString
                                    (
                                        (
                                            CompressHelper.DeflateDecompress
                                                (
                                                    bytes
                                                )
                                        )
                                    );
                Console.WriteLine(ss);
            }
        }
    }
    
    
  • 相关阅读:
    CMake 手册详解(十九)
    CMake 手册详解(二十三)
    CMake 手册详解(二十)
    xtrabackupex xbstream 流备份还原(转载)
    xtrabackup 安装与使用(转载)
    怎么样写好一篇技术博客
    python为什么需要符号表
    cmake的一些基本概念及源码结构
    让IT工作者过劳的13个坏习惯
    SHTML和HTML的区别
  • 原文地址:https://www.cnblogs.com/Microshaoft/p/CompressHelper.html
Copyright © 2020-2023  润新知