首页 > 其他分享 >DataSet 读取/压缩 /解压

DataSet 读取/压缩 /解压

时间:2024-01-22 16:00:51浏览次数:24  
标签:解压 读取 bytes DataSet new byte ds MemoryStream

 

            // 从数据库读取dataset ,压缩写入 wenjian
            MssqlHelper db = new MssqlHelper(GlobalSetting.ConnectString);
            DataSet ds = db.ExecuteDataSet("select * from dim_goods");
            byte[] bytesData = GetBytesFromDataSet(ds);
            byte[] byteCompress = CompressBytes(bytesData);
            WriteByteToFile(@"d:\temp\dim_goods9.zip", byteCompress);

 

            //读取压缩文件, 还原为dataset 
            byte[] bytesData = ReadFromFile(@"d:\temp\dim_goods9.zip");
            byte[] byteCompress = Decompress(bytesData);
            DataSet ds = ByteArrayToDataSet(byteCompress);

 

 

 

        public static byte[] GetBytesFromDataSet(DataSet ds)
        {
            byte[] data = null;
            using (MemoryStream stream = new MemoryStream())
            {
                IFormatter bf = new BinaryFormatter();
                ds.RemotingFormat = SerializationFormat.Binary;
                bf.Serialize(stream, ds);
                data = stream.ToArray();
            }
            return data;
        }
        public static DataSet ByteArrayToDataSet(byte[] arrBytes)
        {
            MemoryStream memStream = new MemoryStream();
            BinaryFormatter binForm = new BinaryFormatter();
            memStream.Write(arrBytes, 0, arrBytes.Length);
            memStream.Seek(0, SeekOrigin.Begin);
            DataSet ds = (DataSet)binForm.Deserialize(memStream);

            return ds;
        }
        //压缩字节
        //1.创建压缩的数据流 
        //2.设定compressStream为存放被压缩的文件流,并设定为压缩模式
        //3.将需要压缩的字节写到被压缩的文件流
        public static byte[] CompressBytes(byte[] bytes)
        {
            using (MemoryStream compressStream = new MemoryStream())
            {
                using (var zipStream = new GZipStream(compressStream, CompressionMode.Compress))
                    zipStream.Write(bytes, 0, bytes.Length);
                return compressStream.ToArray();
            }
        }
        //解压缩字节
        //1.创建被压缩的数据流
        //2.创建zipStream对象,并传入解压的文件流
        //3.创建目标流
        //4.zipStream拷贝到目标流
        //5.返回目标流输出字节
        public static byte[] Decompress(byte[] bytes)
        {
            using (var compressStream = new MemoryStream(bytes))
            {
                using (var zipStream = new GZipStream(compressStream,CompressionMode.Decompress))
                {
                    using (var resultStream = new MemoryStream())
                    {
                        zipStream.CopyTo(resultStream);
                        return resultStream.ToArray();
                    }
                }
            }
        }

        public static byte[] ReadFromFile(string file)
        {
            FileStream fs = new FileStream(file, FileMode.Open, System.IO.FileAccess.Read);
            byte[] bytes = new byte[fs.Length];
            fs.Read(bytes, 0, (int)fs.Length);
            return bytes;
        }

        public static void WriteByteToFile(string file , byte[] bytes)
        {
            FileStream fs = new FileStream(file, FileMode.Create, System.IO.FileAccess.Write);
            
            fs.Write(bytes, 0, bytes.Length);
            fs.Close();
        }

 

标签:解压,读取,bytes,DataSet,new,byte,ds,MemoryStream
From: https://www.cnblogs.com/easybi/p/17980257

相关文章

  • tar 解压文件时提示 Ignoring unknown extended header keyword
    在Linux上使用tar解压文件时出现下列提示:tar:Ignoringunknownextendedheaderkeyword'LIBARCHIVE.xattr.com.apple.quarantine'tar:Ignoringunknownextendedheaderkeyword'LIBARCHIVE.xattr.com.apple.provenance'tar:Ignoringunknownextendedhea......
  • offline RL | ABM:从 offline dataset 的好 transition 提取 prior policy
    ICLR2020,666。材料:论文题目:KeepDoingWhatWorked:BehaviorModellingPriorsforOfflineReinforcementLearning项目网站:https://sites.google.com/view/behavior-modelling-priorspdf版本:https://arxiv.org/pdf/2002.08396.pdfhtml版本:https://ar5iv.labs.arxi......
  • 使用hf-mirror下载数据集时需要添加参数 --repo-type dataset
    在国内下载huggingface可以使用hf-mirror加速下载,一般的使用方法可以参见:https://hf-mirror.com/上的介绍。我在使用hf-mirror下载时,参照网站第一种方法,指定仓库名称和本地下载地址下载时,发生了报错,错误如下:报错指出我们有正确的repo_id和repo_type,对于这两个参数一头雾......
  • 无涯教程-PDFBox - 读取文本
    在上一章中,无涯教程了解了如何在现有的PDF文档中添加文本。在本章中将讨论如何从现有的PDF文档中读取文本。提取文本是PDF框库的主要功能之一。您可以使用PDFTextStripper类的getText()方法提取文本。此类从给定的PDF文档中提取所有文本。以下是从现有PDF文档提取文本的步骤......
  • 使用JSZip库解压后台返回的Blob格式文件,并回显到element-ui的el-upload组件
    有一个报告列表,点击编辑的时候需要回显新建时上传的附件。后台提供了一个下载接口,但是会将所有上传的文件打包为一个压缩的blob。类似这种:leturlArr=[];urlArr=urlArr.concat(this.downLoadUrl.split(";"));this.$http.downLoadFile({url:urlArr.......
  • 【Python】解压压缩包(处理中文乱码问题)
    支持中文编码fromzipfileimportZipFiledefsupport_gbk(zip_file):name_to_info=zip_file.NameToInfo#copymapfirstforname,infoinname_to_info.copy().items():real_name=name.encode('cp437').decode('gbk')......
  • 读取Execl数据到Datatable或DataSet时 日期单元格出现乱码的解决方案
    Execl某单元格数据为2012-1-10读取到DataTable变为40918不是正确的2012-1-10其实excel在转换格式的时候就自动把日期变成数字了,那这个数字是怎么来的呢?如果你把日期改成1900年1月1日,那么你可以看到他的转换结果是1,以此类推,39902是哪一天就明白了吧解决方法一://strValu......
  • EasyExcel读取指定列数据返回集合
    有些时候我们只需要获取Excel中的某一列数据使用,我们就可以将这一列数据读取到集合中以便于后续操作。1、引入依赖<!--easyexcel--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><......
  • 实验三Spark 读取文件系统的数据
    Spark读取文件系统的数据(1)在spark-shell中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数;(2)在spark-shell中读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;(3)编写独立应用程序,读取HDFS系统文件“/u......
  • 使用zipFile读取文件时遇到的问题及解决(KeyError: "There is no item named 'xxx' in
    问题描述在Windows上跑一段代码时,遇到如下问题:KeyError:"Thereisnoitemnamed'CDR_Data\\\\CDR.Corpus.v010516\\\\CDR_DevelopmentSet.PubTator.txt'inthearchive"原因分析这是一段Python代码,代码中使用到了zipfile库,它首先创建了一个ZipFile对象,然后在调用read()......