Using ZipLib to create a Zip File in C#

Using ZipLib to create a Zip File in C#System.IO.Compression是.Net2.0里与压缩有关的命名空间,但是使用起来并不是很方便。使用第3方库ziplib可以很方便地进行压缩类的操作。从[1]下载动态库,然后在工程里AddReference,把ICSharpCode.SharpZipLib.dll加进去。在代码来创建一个zip包的例子如下(摘自ziplibsamplecode)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

System.IO.Compression.Net 2.0里与压缩有关的命名空间,但是使用起来并不是很方便。使用第3方库ziplib可以很方便地进行压缩类的操作。

      从[1] 下载动态库,然后在工程里Add Reference,把ICSharpCode.SharpZipLib.dll加进去。

在代码来创建一个zip包的例子如下(摘自ziplib sample code

using ICSharpCode.SharpZipLib.Checksums;

using ICSharpCode.SharpZipLib.Zip;

using ICSharpCode.SharpZipLib.GZip;

把指定目录下的所有文件压缩到一个zip包里

        private void ZipTheReports()
        {

            string year = System.DateTime.Today.Year.ToString();
            string month = System.DateTime.Today.Month.ToString();
            string days = System.DateTime.Today.Day.ToString();    

            string[] filenames = Directory.GetFiles(curDir);

            string zipFileName = “Rplan Report “ + year + month + days + “.zip”;
            string zipAbsPath = this.curDir + zipFileName;

            zipRelativePath = zipFileName;

            Crc32 crc = new Crc32();
            ZipOutputStream s = new ZipOutputStream(File.Create(zipAbsPath)); //
指定zip文件的绝对路径,包括文件名

           

            s.SetLevel(6); // 0 – store only to 9 – means best compression

            foreach (string file in filenames)
            {

                FileStream fs = File.OpenRead(file); //
文件的绝对路径,包括文件名

                
byte[] buffer =
new
byte[fs.Length];

                fs.Read(buffer, 0, buffer.Length);

               
ZipEntry entry =
new
ZipEntry(extractFileName(file));
//
这里
ZipEntry
的参数必须是相对路径名,表示文件在
zip
文档里的相对路径

                entry.DateTime =
DateTime.Now;

 

              
// set Size and the crc, because the information

                // about the size and crc should be stored in the header

                // if it is not set it is automatically written in the footer.

                // (in this case size == crc == -1 in the header)

                // Some ZIP programs have problems with zip files that don’t store

                // the size and crc in the header.

                entry.Size = fs.Length;
                fs.Close();

                crc.Reset();

                crc.Update(buffer);

                entry.Crc = crc.Value;

                s.PutNextEntry(entry);

 

               s.Write(buffer, 0, buffer.Length);

            }

            s.Finish();
            s.Close();

        }

 

 
// e.g. convert  c:\\temp\test.xls to test.xls

       private string extractFileName(string filePath)
        {

  

            int index1 = filePath.LastIndexOf(“\\”);

            string fileName =

                filePath.Substring(index1+1);

 

           
return fileName;

        }

 

Reference

1ZipLib
http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx
A port of zlib library to C#. Its license allows developers to include this library in commercial, closed-source applications.

2. System.IO.Compression Namespace
http://msdn2.microsoft.com/en-us/library/system.io.compression.aspx

DeflateStream Class
http://msdn2.microsoft.com/en-us/library/system.io.compression.deflatestream.aspx

3Compression Application Sample
http://msdn2.microsoft.com/en-us/library/ywf6dxhx.aspx

This sample demonstrates compression capabilities available in the .NET Framework. It builds a Windows Forms application that employs the GZipStream and DeflateStream types to compress and decompress files. The sample also introduces several types that are new in the .NET Framework version 2.0.

 

4. Using the Zip Classes in the J# Class Libraries to Compress Files and Data with C#

http://msdn.microsoft.com/msdnmag/issues/03/06/ZipCompression/default.aspx

转载于:https://www.cnblogs.com/yuquanlaobo/archive/2007/01/17/622851.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159448.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 耳机线的接法_耳机线焊接法图解大全

    耳机线的接法_耳机线焊接法图解大全耳机是我们日常必备工具,尤其是在公共场所或是夜深人静时!之前一直用的是入耳式的耳机,隔音效果好,声音大,所以下狠心买了一个用过最贵的耳机90+元。但是买回用了不到两个星期就让我给弄报废了,而且入耳式的耳机戴久了耳朵塞的疼。所以我就淘宝买了个8.6元包邮的山寨苹果耳机,结果带给了我很多惊喜,没想到音质丝毫不比之前的任何耳机差,戴着也舒服。最重要的是隔音效果好,每当夜深人静时无论是听音乐还是看剧都与世…

    2025年7月14日
    5
  • 2012年计算机工作总结,计算机教师工作总结2011-2012

    2012年计算机工作总结,计算机教师工作总结2011-2012计算机教师工作总结2011-20122010-2011第一学期计算机教学工作总结郑龙勤本学期,我任教24,25,26,27班的计算机应用基础教学,同时兼任学校的中职资助、机房维护等工作。在各位领导和老师的热心支持和帮助下,我认真做好教学工作,积极完成学校布置的各项任务。下面我把2010-2011年第一学期的工作做简要的汇报。一、学校制度执行情况平时积极参加全校教职工会议,认真学习学校下达的文件,关…

    2022年5月12日
    35
  • Arcgis二次开发——发布地图

    Arcgis二次开发——发布地图简单发布地图1、测试arcgispro发布地图默认打开arcgispro的地图模板,点击“共享”=》“web地图”,填上相关信息,点击“共享”。完成之后,即可在arcgisonline里看到新发布的“maptest001”服务。2、在arcgisonline里查看发布的内容3、用arcgisjsapi的沙箱查看刚刚发布的地图注意设置:esriConfig.portalUrl=”arcgisonline的个人主页地址”portalItem的id就是你发布…

    2022年7月23日
    32
  • java笔试题库_java笔试题50道 收藏版

    java笔试题库_java笔试题50道 收藏版1、在JavaEE中,Servlet是在服务器端运行,以处理客户端请求而做出的响应的程序,下列选项中属于Servlet生命周期阶段的是()A、加载和实例化B、初始化C、服务D、销毁E、以上全部答案:E2、在JavaEE中的MVC设计模式中,()负责接受客户端的请求数据A、JavaBeanB、JSPC、ServletD、HTML答案:C3、过滤器应实现的接口是()。A、HttpServle…

    2022年7月7日
    31
  • thinkCMF—-列表页跳转

    thinkCMF—-列表页跳转

    2021年6月11日
    89
  • ODT_ODT2是什么意思

    ODT_ODT2是什么意思ODT练手CF915E题意:Q次区间(1~n)操作,k=2区间(l,r)变为1,k=1区间(l,r)变为0,一开始全是1问每次操作后1的数目n<=1e9Q<=1e5#include<bits/stdc++.h>usingnamespacestd;#definelllonglongllqmod(lla,llb,llmod){…

    2022年9月10日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号