压缩解压

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.IO;
using  System.IO.Compression;

namespace  Framework
{
    
public   class  CompressionHelper
    {
        
public  CompressionHelper()
        {
           
        }

        
public   static   byte [] CompressByte( byte [] bytes)
        {
            MemoryStream ms 
=   new  MemoryStream();
            GZipStream s 
=   new  GZipStream(ms, CompressionMode.Compress);
            s.Write(bytes, 
0 , bytes.Length); 
            s.Close();
            
return  ms.ToArray();
        }

        
public   static   byte [] DeCompressByte( byte [] bytes)
        {
            
byte [] writeData  =   new   byte [ 4096 ];
            MemoryStream ms 
=   new  MemoryStream(bytes);
            Stream sm 
=   new  GZipStream( new  MemoryStream(bytes), CompressionMode.Decompress);
            MemoryStream outStream 
=   new  MemoryStream();
            
while  ( true )
            {
                
int  size  =  sm.Read(writeData,  0 , writeData.Length );
                
if  (size  > 0 )
                {
                    outStream.Write(writeData, 
0 , size);
                }
                
else
                {
                    
break ;
                }
            }
            sm.Close();
            
byte [] outArr  =  outStream.ToArray();
            outStream.Close();
            
return  outArr;    
        }

        
public   static   string  CompressString( string  data)
        {
            
byte [] bytData  =  System.Text.Encoding.UTF8.GetBytes(data);
            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  DeCompressString( string  data)
        {
            System.Text.StringBuilder uncompressedString 
=   new  System.Text.StringBuilder();
            
byte [] writeData  =   new   byte [ 4096 ];

            
byte [] bytData  =  System.Convert.FromBase64String(data);
            
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();
        }
    }
}

你可能感兴趣的:(压缩)