美文网首页
序列化对象并写入压缩文件及解压缩

序列化对象并写入压缩文件及解压缩

作者: 价值投机168 | 来源:发表于2021-04-13 16:44 被阅读0次
 var fileName = Path.Combine(_cachePath, Path.GetRandomFileName());
                while (File.Exists(fileName))
                {
                    fileName = Path.Combine(_cachePath, Path.GetRandomFileName());
                } //这一段代码是获取不重复的文件名

                using var fs = File.Create(fileName);
                using var archive = new ZipArchive(fs, ZipArchiveMode.Create); //使用上面创建的文件流直接创建一个压缩流
                using var zs = archive.CreateEntry(Path.GetFileName(fileName)).Open();
                zs.Write(JsonSerializer.SerializeToUtf8Bytes(ca));//将对象json序列化并写入文件中

//(using XXX){}可以写成这样了using var XXX,方便多了,还不用关闭了 

解压缩:

using var fs = File.Open(file, FileMode.Open);
                            using var archive = new ZipArchive(fs, ZipArchiveMode.Read);
                            using var stream = archive.Entries[0].Open();

                            var len = (int)archive.Entries[0].Length;
                            var buffer = ArrayPool<byte>.Shared.Rent(len);//申请一块内存,申请到的空间大于等于需要的len,比new的效率高

                            MailData ca = null;
                            try
                            {
                                stream.Read(buffer, 0, len);
                                ca = JsonSerializer.Deserialize<MailData>(new ReadOnlySpan<byte>(buffer, 0, len));
                            }
                            finally
                            {
                                ArrayPool<byte>.Shared.Return(buffer);//将内存还回去,不用释放
                            }

相关文章

  • 序列化对象并写入压缩文件及解压缩

    解压缩:

  • Java中序列化和打印流

    一、对象序列化和反序列化 1、概述 对象的序列化:对象中的数据,以流的形式,写入到文件中并保存的过程称为写出对象,...

  • serialVersionUID是干什么用的

    序列化 使Java的对象可以序列化, 但是为什么需要这个id呢. 这个序列化的对象, 在写入(序列化)和读取(反序...

  • NSCoding协议

    什么叫对象序列化? 对象序列化就是把对象写入到输出流中,用来存储或者传输,如果不序列化,(自定义对象是无法存储的)...

  • Python Pandas to_pickle()压缩文件

    本文将通过pandas to_pickle()方法压缩文件,并比较不同格式压缩文件的大小、写入速度、读取速度,对比...

  • 序列化(java Serializeable、json、prot

    java序列化 序列化:将对象写入到IO流中反序列化:从IO流中恢复对象意义:序列化机制允许将实现序列化的Java...

  • 序列化和反序列化

    序列化和反序列化 序列化是将对象转化为字节序列的过程 反序列化是将子节序列恢复成对象的过程 作用:把对象写入到文件...

  • 源码安装-基于调试版本

    1.解压缩文件 tar -xzvf postgresql-9.6.2.tar.gz 2.配置源码并生成Makefi...

  • 2020-03-18-Java

    1.作业 需要考虑:(1)写入对象数据到磁盘(2)从磁盘读取对象数据(3)对象数据的序列化(4)对象数据的反序列化...

  • Java序列化

    含义、意义使用场景 序列化:将对象写入到IO流中 反序列化:从IO流中恢复对象 意义:序列化机制允许将实现序列化的...

网友评论

      本文标题:序列化对象并写入压缩文件及解压缩

      本文链接:https://www.haomeiwen.com/subject/hplclltx.html