zoukankan      html  css  js  c++  java
  • Gzipstream 解压问题

    Gzipstream  解压问题 

    static void Main(string[] args)
            {
    
                string path = @"C:\fg.txt"; //压缩前
                string pathdes=@"C:\fg1.txt"; //压缩后
                string depath = @"C:\fg2.txt"; //还原为
    
                GzipFile(path, pathdes);           
    
    
                DeGzipFile(pathdes,depath );
                Console.Read();
            }
    
    
    
            /// <summary>
            /// 压缩文件
            /// </summary>
            /// <param name="soursPath"></param>
            /// <param name="desPath"></param>
            static void GzipFile(string soursPath, string desPath)
            {
                //File.ReadAllText(Path,Encoding.Default)
                byte[] compressed = Compress(File.ReadAllBytes(soursPath));
                File.WriteAllBytes(desPath, compressed);
    
            }
    
            /// <summary>
            /// 解压文件
            /// </summary>
            /// <param name="soursPath"></param>
            /// <param name="desPath"></param>
            static void DeGzipFile(string soursPath, string desPath)
            {
                byte[] compressed = Decompress(File.ReadAllBytes(soursPath));
                File.WriteAllBytes(desPath, compressed);
    
            }
    
            /// <summary>
            /// 压缩流
            /// </summary>
            /// <param name="data">byte[] 输入流</param>
            /// <returns>输出流byte[]</returns>
            public static byte[] Compress(byte[] data)
            {
                byte[] result;
                Console.WriteLine("初始大小:\t{0} bytes", data.Length);
                using (MemoryStream baseStream = new MemoryStream())
                {
                    using (GZipStream stream = new GZipStream(baseStream, CompressionMode.Compress, true))
                    {
                        stream.Write(data, 0, data.Length);
                    }
                    result = baseStream.ToArray();  // only safe to read after deflate closed
                }
                Console.WriteLine("压缩后大小:\t{0} bytes", result.Length);
                return result;
            }
    
    
    
            /// <summary>
            /// 将流解压缩
            /// </summary>
            /// <param name="data">byte[] 输入流</param>
            /// <returns>输出流byte[]</returns>
            public static byte[] Decompress(byte[] data)
            {            
                byte[] result;
                Console.WriteLine("解压前大小:\t{0} bytes", data.Length);
                using (MemoryStream mStream = new MemoryStream(data))
                {
                    using (GZipStream gStream = new GZipStream(mStream, CompressionMode.Decompress))
                    {
                        StreamReader streamR = new StreamReader(gStream, Encoding.Default);//此处Encoding 选择默认
                        string outs = streamR.ReadToEnd();//也可以直接返回字符串
                        result = Encoding.Default.GetBytes(outs);
                    }
                }
                Console.WriteLine("解压后大小:\t{0} bytes", result.Length);
                return result;
            }
    

      

  • 相关阅读:
    usb驱动开发6之端点描述符
    usb驱动开发5之总线设备与接口
    usb驱动开发4之总线设备驱动模型
    usb驱动开发3之先看core
    usb驱动开发2之代码地图
    usb驱动开发1之学习准备
    javascript限制上传文件大小
    google Chrome打开多个网站时等待可用的套接字,怎么加大连接数量提升速度
    sql将一张表的字段赋值给另一张表
    百度搜索网址参数的含义
  • 原文地址:https://www.cnblogs.com/senion/p/2376969.html
Copyright © 2011-2022 走看看