国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Compression Helper Class using SharpZipLib

2024-07-21 02:15:54
字體:
來源:轉載
供稿:網友


使用 sharpziplib 進行壓縮的輔助類,簡化壓縮字節數組和字符串的操作。








using system;



using system.text;



using system.io;



using icsharpcode.sharpziplib.bzip2;



using icsharpcode.sharpziplib.gzip;



using icsharpcode.sharpziplib.zip;




 


namespace compression



{



    /// <summary>



    /// 壓縮方式。



    /// </summary>



    public enum compressiontype



    {



        gzip,



        bzip2,



        zip



    }




 


    /// <summary>



    /// 使用 sharpziplib 進行壓縮的輔助類,簡化壓縮字節數組和字符串的操作。



    /// </summary>



    public class compressionhelper



    {



        /// <summary>



        /// 壓縮供應者,默認為 gzip。



        /// </summary>



        public static compressiontype compressionprovider = compressiontype.gzip;




 


        #region public methods




 


        /// <summary>



        /// 從原始字節數組生成已壓縮的字節數組。



        /// </summary>



        /// <param name="bytestocompress">原始字節數組。</param>



        /// <returns>返回已壓縮的字節數組</returns>



        public static byte[] compress( byte[] bytestocompress )



        {



            memorystream ms = new memorystream();



            stream s = outputstream( ms );



            s.write( bytestocompress, 0, bytestocompress.length );



            s.close();



            return ms.toarray();



        }




 


        /// <summary>



        /// 從原始字符串生成已壓縮的字符串。



        /// </summary>



        /// <param name="stringtocompress">原始字符串。</param>



        /// <returns>返回已壓縮的字符串。</returns>



        public static string compress( string stringtocompress )



        {



            byte[] compresseddata = compresstobyte( stringtocompress );



            string strout = convert.tobase64string( compresseddata );



            return strout;



        }




 


        /// <summary>



        /// 從原始字符串生成已壓縮的字節數組。



        /// </summary>



        /// <param name="stringtocompress">原始字符串。</param>



        /// <returns>返回已壓縮的字節數組。</returns>



        public static byte[] compresstobyte( string stringtocompress )



        {



            byte[] bytdata = encoding.unicode.getbytes( stringtocompress );



            return compress( bytdata );



        }




 


        /// <summary>



        /// 從已壓縮的字符串生成原始字符串。



        /// </summary>



        /// <param name="stringtodecompress">已壓縮的字符串。</param>



        /// <returns>返回原始字符串。</returns>



        public string decompress( string stringtodecompress )



        {



            string outstring = string.empty;



            if ( stringtodecompress == null )



            {



                throw new argumentnullexception("stringtodecompress", "you tried to use an empty string");



            }




 


            try



            {



                byte[] inarr = convert.frombase64string(stringtodecompress.trim());



                outstring = encoding.unicode.getstring(decompress(inarr));



            }



            catch (nullreferenceexception  nex)



            {



                return nex.message;



            }




 


            return outstring;



        }




 


        /// <summary>



        /// 從已壓縮的字節數組生成原始字節數組。



        /// </summary>



        /// <param name="bytestodecompress">已壓縮的字節數組。</param>



        /// <returns>返回原始字節數組。</returns>



        public static byte[] decompress( byte[] bytestodecompress )



        {



            byte[] writedata = new byte[4096];



            stream s2 = inputstream( new memorystream( bytestodecompress ) );



            memorystream outstream = new memorystream();




 


            while (true)



            {



                int size = s2.read( writedata, 0, writedata.length );



                if ( size > 0 )



                {



                    outstream.write( writedata, 0, size );



                }



                else



                {



                    break;



                }



            }



            s2.close();



            byte[] outarr = outstream.toarray();



            outstream.close();



            return outarr;



        }




 


        #endregion




 


        #region private methods




 


        /// <summary>



        /// 從給定的流生成壓縮輸出流。



        /// </summary>



        /// <param name="inputstream">原始流。</param>



        /// <returns>返回壓縮輸出流。</returns>



        private static stream outputstream( stream inputstream )



        {



            switch ( compressionprovider )



            {



                case compressiontype.bzip2:



                    return new bzip2outputstream( inputstream );




 


                case compressiontype.gzip:



                    return new gzipoutputstream( inputstream );




 


                case compressiontype.zip:



                    return new zipoutputstream( inputstream );




 


                default:



                    return new gzipoutputstream( inputstream );



            }



        }




 


        /// <summary>



        /// 從給定的流生成壓縮輸入流。



        /// </summary>



        /// <param name="inputstream">原始流。</param>



        /// <returns>返回壓縮輸入流。</returns>



        private static stream inputstream( stream inputstream )



        {



            switch (compressionprovider)



            {



                case compressiontype.bzip2:



                    return new bzip2inputstream(inputstream);




 


                case compressiontype.gzip:



                    return new gzipinputstream(inputstream);




 


                case compressiontype.zip:



                    return new zipinputstream(inputstream);




 


                default:



                    return new gzipinputstream(inputstream);



            }



        }




 


        #endregion



    }



}



來源:http://www.mostlylucid.co.uk/archive/2004/04/06/958.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定兴县| 博兴县| 怀化市| 龙南县| 南汇区| 辽源市| 杭锦后旗| 苍南县| 婺源县| 马关县| 林周县| 鲁山县| 瑞金市| 吉林省| 胶州市| 巫山县| 海口市| 车险| 大田县| 耒阳市| 井研县| 普宁市| 赣榆县| 崇义县| 湘西| 渭南市| 芷江| 印江| 涞源县| 罗平县| 陇川县| 屏山县| 贵定县| 株洲县| 淮安市| 梁山县| 乳山市| 甘南县| 正阳县| 厦门市| 当雄县|