zoukankan      html  css  js  c++  java
  • c# 序列压缩、反序列解压缩对象并保存文件

    public object DeCompress(string fileName)
            {
                object obj = null;
                try
                {
                    using (Stream source = File.OpenRead(fileName))
                    {
                        using (Stream destination = new MemoryStream())
                        {
                            using (GZipStream input = new GZipStream(source, CompressionMode.Decompress, true))
                            {
                                byte[] bytes = new byte[4096];
                                int n;
                                while ((n = input.Read(bytes, 0, bytes.Length)) != 0)
                                {
                                    destination.Write(bytes, 0, n);
                                }
                            }
                            destination.Flush();
                            destination.Position = 0;
                            BinaryFormatter b = new BinaryFormatter();
                            obj = (object)b.Deserialize(destination);
                        }
                    }
                }
                catch
                { }
                return obj;
            }
            private void CreateCompressFile(object obj, string fileName)
            {
                try
                {
                    BinaryFormatter formatter = new BinaryFormatter();
                    using (Stream source = new MemoryStream())
                    {
                        formatter.Serialize(source, obj);
                        source.Position = 0;
                        using (Stream destination = new FileStream(fileName, FileMode.Append, FileAccess.Write))
                        {
                            using (GZipStream output = new GZipStream(destination, CompressionMode.Compress))
                            {
                                byte[] bytes = new byte[4096];
                                int n;
                                while ((n = source.Read(bytes, 0, bytes.Length)) != 0)
                                {
                                    output.Write(bytes, 0, n);
                                }
                            }
                        }
                    }
                }
                catch
                { }
            }

    测试:

    public void test()
            {
                string fileName = AppDomain.CurrentDomain.BaseDirectory.Trim() + "test.dat";
                Dictionary<string, int> dic = new Dictionary<string, int>();
                dic.Add("a", 1);
                dic.Add("b", 2);
                dic.Add("c", 3);
                dic.Add("d", 4);
                dic.Add("e", 5);
                dic.Add("f", 6);
                CreateCompressFile(dic, fileName);
                dic = (Dictionary<string, int>)DeCompress(fileName);
                Console.WriteLine(dic.Count);
            }

  • 相关阅读:
    python爬虫学习笔记(二十五)-Scrapy框架 Middleware
    python爬虫学习笔记(二十四)-Scrapy框架 图片管道的使用
    关于./xxx.sh:No such file or directory 的问题解决
    elasticsearch的配置
    如何在虚拟机上安装mysql...
    JDK与Tomcat在虚拟机内的安装教程
    Linux下的一些实用的基础命令
    Mybatis框架下的增删改查
    使用JSP生成Web页面
    关于mysql与java数据类型转化的问题——数据类型不匹配
  • 原文地址:https://www.cnblogs.com/94cool/p/2159146.html
Copyright © 2011-2022 走看看