• 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);
            }

  • 相关阅读:
    抽象类于接口
    继承
    分布式爬虫基于scrapy
    nginx wsgi django 建站配置最终版
    scrapy crawlspider内置方法源码
    redis数据的安装以及基本使用方法
    CrawlSpider 用法(页面链接提取解析 例如:下一页)
    请求传参
    日志等级
    代理操作
  • 原文地址:https://www.cnblogs.com/94cool/p/2159146.html
Copyright © 2020-2023  润新知