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

  • 相关阅读:
    当前网页调用其他网页
    保护自己的网页不被放入框架
    保护网页源码
    页面的后退、刷新、前进
    妙味——拖拽+碰撞+重力
    运行代码
    妙味——弹性运动
    IE css bug及解决方案参考
    妙味——布局转换的应用
    [LeetCode][JavaScript]Count Complete Tree Nodes
  • 原文地址:https://www.cnblogs.com/94cool/p/2159146.html
Copyright © 2011-2022 走看看