首页 > 编程语言 >C# MemoryStream转GZipStream 到文件

C# MemoryStream转GZipStream 到文件

时间:2023-06-06 15:12:30浏览次数:76  
标签:MemoryStream C# bytes GZipStream len new memStream

压缩:

public static void MemoryStreamCompress(string fileName, MemoryStream memStream)
        {
            FileStream fsWrite = File.OpenWrite(fileName);

            byte[] bytes = new byte[1 * 1024 * 1024];
            GZipStream compressedzipStream = new GZipStream(fsWrite, CompressionMode.Compress);

            memStream.Position = 0;

            while(true)
            {
                int len = memStream.Read(bytes, 0, bytes.Length);

                if (len > 0)
                    compressedzipStream.Write(bytes, 0, len);
                else
                    break;
            }

            compressedzipStream.Close(); 
        }

解压

public static MemoryStream MemoryStreamDeCompress(string fileName)
        {
            FileStream fsRead = File.OpenRead(fileName);

            byte[] bytes = new byte[1 * 1024 * 1024];
            MemoryStream memStream = new MemoryStream();

            GZipStream DecompressedzipStream = new GZipStream(fsRead, CompressionMode.Decompress);

            while (true)
            {
                int len = DecompressedzipStream.Read(bytes, 0, bytes.Length);
                if (len > 0)
                    memStream.Write(bytes, 0, len);
                else
                    break;
            }
            DecompressedzipStream.Close();

            memStream.Position = 0;

            return memStream;
        }

如果是对象的话,可以直接对象序列化到GZipStream 的,相关代码涉及到公司就不放了,原理就是序列化时把 :MemoryStream做参数 传入GZipStream,然后GZipStream传入序列化函数,如果要获取流的大小,流close掉不能用流对象.Length,需要流对象.ToArray().Length才可以。

标签:MemoryStream,C#,bytes,GZipStream,len,new,memStream
From: https://www.cnblogs.com/wuguoqiang/p/17460593.html

相关文章

  • git报错would clobber existing tag
    使用vscode拉取代码出现报错:解决问题如下:1.在terminal直接输入gitpull完成对代码的拉取,代码虽然拉取了,但是vscode的git工具还是不能用2.在terminal输入gitfetch--tags-f,先完成对本地代码tag的强制更新。3.再使用vscode的git工具拉取代码 ......
  • CentOS7.0设置开机网卡自动启动
    新安装的centos7系统网卡没有自动启动[root@ETS004~]#cd/etc/sysconfig/network-scripts[root@ETS004network-scripts]#ls//列出network-scripts文件夹下的列表信息找到ifcfg-ens197这类网卡信息[root@ETS004 network-scripts]#viifcfg-ens197......
  • spingboot maven 使用简化配置 将本地包加入classpath
    不是使用dependencyManagement<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><relativePath......
  • Halcon算子
    halcon模板匹配--create_shape_model create_shape_model(Template :://reduce_domain后的模板图像                        NumLevels,//金字塔的层数,可设为“auto”或0—10的整数                     AngleStart,//......
  • Mac视频剪辑软件-Final Cut Pro v10.6.6中文版
    随着视频内容的不断发展和普及,越来越多的人开始将视频制作作为一种创作方式和表达形式。而想要制作高质量的视频,需要用到专业的视频编辑软件。其中,FinalCutPro是一款非常受欢迎的Mac上的视频剪辑软件,它具有丰富的功能和强大的性能,可以帮助用户轻松地完成复杂的视频制作任务。→......
  • chatglm_langchain_demo
    #Setupenvirnmentcondacreate-nlangchainpython=3.8.1-ycondaactivatelangchain#拉取仓库gitclonehttps://github.com/imClumsyPanda/langchain-ChatGLM.git#安装依赖cdlangchain-ChatGLMpython3-mpipinstall-rrequirements.txtpython3-mpipinstal......
  • [linux]记录一次C语言综合练习
    题目根据特定功能设计程序,要求由main.c,Fun1.c-Fun3.c选择其中任意两个,共三个C语言文件和1个头文件组成,其中fun1.c,fun2.c和fun3.c都使用了define.h中的声明,C语言文件的功能分别是:fun1.c:输出9*9口诀fun2.c:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?......
  • 拓扑错误:自交。jts.geom.TopologyException: found non-noded intersection between L
    Thatbeingsaid,youwillwanttoensurethegeometriesarevalidbeforecomputingtheintersection,using polygon1.isValid() and polygon2.isValid().Thesampledatafor polygon2 isself-intersecting,sotheintersectionoperationfailswithcom.vividso......
  • Leetcode 2352. 相等行列对
    题目:给你一个下标从0开始、大小为nxn的整数矩阵grid,返回满足\(R_i\)行和\(C_j\)列相等的行列对(\(R_i\),\(C_j\))的数目。如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。难度:中等示例1:输入:grid=[[3,2,1],[1,7,6],[2,7,7]]输出:1......
  • chatglm_langchain
    #Setupenvirnment!condacreate-nlangchainpython=3.8.1-y!condaactivatelangchain#拉取仓库#!gitclonehttps://github.com/imClumsyPanda/langchain-ChatGLM.git!cp-r/kaggle/input/langchain-chatglm//kaggle/working/langchain-ChatGLM#安装依赖%cd/ka......