• ICSharpCode.SharpZipLib 内存压缩 下载


        private void DownLoadAsZip(string folderName, string outFileName)
        {
            //取文件夹下文件,只取当前目录下文件,子文件不取
            string[] files = Directory.GetFiles(folderName);
    
            int folderOffset = folderName.Length + (folderName.EndsWith("\") ? 0 : 1);  //设置文件路径长度,方便后续取文件夹中文件及生成子文件夹
    
            MemoryStream outputMemStream = new MemoryStream();
            ZipOutputStream zipStream = new ZipOutputStream(outputMemStream);
            zipStream.SetLevel(0);
    
            foreach (string filename in files)
            {
    
                FileInfo fi = new FileInfo(filename);
    
                string entryName = filename.Substring(folderOffset); // Makes the name in zip based on the folder //取文件名称
                entryName = ZipEntry.CleanName(entryName); // Removes drive from name and fixes slash direction//格式化文件名称
                ZipEntry newEntry = new ZipEntry(entryName); //生成压缩文件项
                newEntry.DateTime = fi.LastWriteTime; // Note the zip format stores 2 second granularity
    
                newEntry.Size = fi.Length;
    
                zipStream.PutNextEntry(newEntry); //把压缩文件项加入 压缩文件流,应该是打开项目添加接口
    
                // Zip the file in buffered chunks
                // the "using" will close the stream even if an exception occurs
                byte[] buffer = new byte[4096];
                using (FileStream streamReader = File.OpenRead(filename))
                {
                    StreamUtils.Copy(streamReader, zipStream, buffer); //把压缩文件项的文件流 copy 进 压缩文件流
                }
                zipStream.CloseEntry();
            }
    
            zipStream.IsStreamOwner = false;    // False stops the Close also Closing the underlying stream.
            zipStream.Close();          // Must finish the ZipOutputStream before using outputMemStream.
    
            //导出
    
            Response.ContentType = "application/zip";
            Response.AddHeader("content-disposition", "attachment;  filename=" + HttpUtility.UrlEncode(outFileName + ".zip", System.Text.Encoding.UTF8));
            outputMemStream.WriteTo(Response.OutputStream);
            Response.Flush();
            Response.End();
    
        }
  • 相关阅读:
    多个EditText 监听矛盾的 解决办法 (Overstack)溢出栈
    JZ2440 裸机驱动 第5章 GPIO接口
    从头调试stm32 HID
    嵌入式GPIO接口及操作(二)
    嵌入式GPIO接口及操作(一)
    嵌入式linux网络配置
    嵌入式开发环境搭建之安装交叉编译工具链
    securecrt鼠标右键的配置
    S3C2440上LCD驱动(FrameBuffer)实例开发讲解(一)
    s3c2440串口详解
  • 原文地址:https://www.cnblogs.com/BinBinGo/p/11206089.html
Copyright © 2020-2023  润新知