C#使用iCSharpcode进行文件压缩实现方法

本文所述为一个C#使用iCSharpcode压缩的使用类,经测试效果不错。分享给大家供大家参考之用。具体方法如下:

1.参数类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ZipCompress
{
  public class ZipParameter
  {
    private string zip_Name = "";
    private string zip_DirectoryName = "";
    private List<string> zip_FileList = new List<string>();
    /// <summary>
    /// 压缩后的文件名称
    /// </summary>
    public string ZIPName
    {
      get { return zip_Name; }
      set { zip_Name = value; }
    }
    /// <summary>
    /// 压缩的文件路径
    /// </summary>
    public string ZIPDirectoryName
    {
      get { return zip_DirectoryName; }
      set { zip_DirectoryName = value; }
    }
    /// <summary>
    /// 压缩的文件列表
    /// </summary>
    public List<string> ZIPFileList
    {
      get { return zip_FileList; }
      set { zip_FileList = value; }
    }
  }
}

2.工作类

//****************************************************************************************
//功能:实现文件压缩
//使用方法:设置参数进行压缩
//*****************************************************************************************

using System;
using ICSharpCode.SharpZipLib.Zip;
using System.IO;
using System.Text;
namespace ZipCompress
{
  public class CompressFile
  {
    /// <summary>
    /// 压缩文件参数
    /// </summary>
    public ZipParameter ZipParameter { get; set; }

    /// <summary>
    /// 压缩文件返回压缩后的信息
    /// </summary>
    /// <returns>string 返回压缩后的提示信息</returns>
    public string CompressReturnMsg()
    {
      FileStream Zip_File;
      ZipOutputStream ZipStream;
      ZipEntry ZipEntry;
      string rtnMessage = "";//返回的信息

      try
      {
        //循环文件,如果文件不存在就不添加的压缩里面
        for (int i = 0; i < ZipParameter.ZIPFileList.Count; i++)
        {
          if (!File.Exists(ZipParameter.ZIPFileList[i]))
          {
            ZipParameter.ZIPFileList.RemoveAt(i);
            i--;
          }

        }
        //没有有文件下面的压缩不执行
        if (ZipParameter.ZIPFileList.Count == 0)
        {
          return " file not find";
        }
        //没有目录进行创建
        if (!Directory.Exists(ZipParameter.ZIPDirectoryName))
        {
          Directory.CreateDirectory(ZipParameter.ZIPDirectoryName);
        }

        // 解决文档名称乱码问题,出现乱码就是因为CodePage不对
        Encoding gbk = Encoding.GetEncoding("gbk");
        ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = gbk.CodePage;

        //文件路径,文档路径与文件名称
        string strPath = ZipParameter.ZIPDirectoryName + ZipParameter.ZIPName;

        Zip_File = File.Create(strPath);
        ZipStream = new ZipOutputStream(Zip_File);
        foreach (string FileToZip in ZipParameter.ZIPFileList)
        {
          Zip_File = File.OpenRead(FileToZip);
          byte[] buffer = new byte[Zip_File.Length];
          Zip_File.Read(buffer, 0, buffer.Length);
          Zip_File.Close();
          ZipEntry = new ZipEntry(Path.GetFileName(FileToZip));
          ZipStream.PutNextEntry(ZipEntry);
          ZipStream.Write(buffer, 0, buffer.Length);
        }
        ZipStream.Finish();
        ZipStream.Close();
        Zip_File.Close();
        rtnMessage = "success";
      }
      catch (Exception ex)
      {
        rtnMessage = "fail:" + ex.Message;
      }
      finally
      {
        GC.Collect();
        GC.Collect(1);
      }
      return rtnMessage;
    }
  }
}

3.使用类

ZipParameter zp = new ZipParameter();
zp.ZIPDirectoryName = @"C:\Users\Public\Pictures\Sample Pictures\";
zp.ZIPName = "Test.zip";
zp.ZIPFileList.Add(@"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg");
zp.ZIPFileList.Add(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg");
zp.ZIPFileList.Add(@"C:\Users\Public\Pictures\Sample Pictures\错误文件.jpg");
CompressFile cprFile = new CompressFile();
cprFile.ZipParameter = zp;
string strMessage = cprFile.CompressReturnMsg();

4.文件源码点此本站下载

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • c#实现metro文件压缩解压示例

    在1.zip中增加一张新图片 复制代码 代码如下: StorageFile jpg = await KnownFolders.PicturesLibrary.GetFileAsync("1.jpg");            StorageFile zip = await KnownFolders.PicturesLibrary.GetFileAsync("1.zip"); //把上面这句改成如下就成了压缩文件            //StorageFile zi

  • C#使用DeflateStream解压缩数据文件的方法

    本文实例讲述了C#使用DeflateStream解压缩数据文件的方法.分享给大家供大家参考.具体分析如下: DeflateStream方法用于从一个流中读取数据,并写入到另一个流.DeflateStream不写入数据到其它类型的资源,比如文件或者内存. DeflateStream在写入另一个流的时候,它会对数据进行压缩和解压缩. 使用DEFLATE压缩数据文件的一般过程: 打开一个现有的文件  打开/创建输出文件  创建减缩对象  逐字节读取源文件,并把它传递给DEFLATE对象  使用defl

  • C#实现文件压缩与解压的方法示例【ZIP格式】

    本文实例讲述了C#实现文件压缩与解压的方法.分享给大家供大家参考,具体如下: 在企业开发过程中经常会遇到文件的压缩与解压,虽然网上很多流行的压缩文件格式都是RAR的,但是由于RAR不是一个开放的标准,因此ZIP成了更多人的选择.如果你不想自己开发的话可以选择开源的项目,比如SharpZipLib就是一个不错的选择. 组件的使用比较简单,请参照下面的代码.点击下载项目源码. /* * Gary Zhang -- cbcye@live.com * www.cbcye.com * www.quickl

  • C#实现的文件压缩和解压缩类

    本文实例讲述了C#实现的文件压缩和解压缩类.分享给大家供大家参考.具体分析如下: 这个C#代码包含了几个类,封装了文件压缩和解压缩常用的方法,包括直接通过代码进行压缩,也有调用winrar对文件进行压缩的 using System; using System.IO; using System.Diagnostics; using Microsoft.Win32; using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.SharpZip

  • C#实现rar压缩与解压缩文件的方法

    本文实例讲述了C#实现rar压缩与解压缩文件的方法.分享给大家供大家参考.具体分析如下: 此程序利用 WinRAR 程序对文件进行压缩,命令行语法可参考WinRAR中文帮助. /// 利用 WinRAR 进行压缩 /// </summary> /// <param name="path">将要被压缩的文件夹(绝对路径)</param> /// <param name="rarPath">压缩后的 .rar 的存放目录(

  • c#调用winrar解压缩文件代码分享

    复制代码 代码如下: using Microsoft.Win32;using System.Diagnostics;压缩string the_rar;RegistryKey the_Reg;object the_Obj;string the_Info;ProcessStartInfo the_StartInfo;Process the_Process;try{the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\S

  • C#文件流进行压缩和解压缩的方法

    本文实例讲述了C#文件流进行压缩和解压缩的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.IO.Compression; using System.Linq; using System.Text; usi

  • C#中使用WinRAR实现加密压缩及解压缩文件

    本次示例主要实现: 1.压缩文件夹及其下文件 2.压缩文件夹下文件 3.压缩文件夹及其下文件为rar 还是 zip 4.解压缩 5.加密压缩及解加密压缩 ----------- 示例代码如下: protected void Button1_Click(object sender, EventArgs e) { string strtxtPath = "C://freezip//free.txt"; string strzipPath = "C://freezip//free.

  • C#实现Zip压缩目录中所有文件的方法

    本文实例讲述了C#实现Zip压缩目录中所有文件的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.IO; using System.Collections; using System.IO.Compression; using System.Collections.Generic; class FolderZip { private const long BUFFER_SIZE = 20480; static void main(string[

  • Windows系统中C#调用WinRAR来压缩和解压缩文件的方法

    过程说明都在注释里,我们直接来看代码: 压缩: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using ICSharpCode.SharpZipLib.Zip; using System.Diagnostics; public class winrar { #region 压缩文件 /// <summary> /// 压缩文件 ///

  • asp.net C#实现解压缩文件的方法

    本文实例讲述了asp.net C#实现解压缩文件的方法.一共给大家介绍了三段代码,一个是简单的解压缩单个zip文件,后一个可以解压批量的大量的但需要调用ICSharpCode.SharpZipLib.dll类了,最后一个比较实例可压缩也可以解压缩了分享给大家供大家参考.具体如下: 解压缩单个文件: 复制代码 代码如下: using System.IO; using System.IO.Compression; string sourceFile=@"D:2.zip"; string d

  • C#使用GZipStream解压缩数据文件的方法

    本文实例讲述了C#使用GZipStream解压缩数据文件的方法.分享给大家供大家参考.具体分析如下: GZipStream用于从一个流读取数据写入到另一个流,GZipStream不能写入到其它的资源,比如文件或者内存,只能从流到流. GZipStream使用的一般流程如下: 打开一个现有的文件  打开/创建输出文件  创建GZipStream对象  逐字节读源文件,并把它传递到GZipStream  使用GZipStream写入到输出文件流 String sourcefilename = FIL

随机推荐