栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

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

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 zip_FileList = new List();
    /// 
    /// 压缩后的文件名称
    /// 
    public string ZIPName
    {
      get { return zip_Name; }
      set { zip_Name = value; }
    }
    /// 
    /// 压缩的文件路径
    /// 
    public string ZIPDirectoryName
    {
      get { return zip_DirectoryName; }
      set { zip_DirectoryName = value; }
    }
    /// 
    /// 压缩的文件列表
    /// 
    public List 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
  {
    /// 
    /// 压缩文件参数
    /// 
    public ZipParameter ZipParameter { get; set; }

    /// 
    /// 压缩文件返回压缩后的信息
    /// 
    /// string 返回压缩后的提示信息
    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:UsersPublicPicturesSample Pictures";
zp.ZIPName = "Test.zip";
zp.ZIPFileList.Add(@"C:UsersPublicPicturesSample PicturesChrysanthemum.jpg");
zp.ZIPFileList.Add(@"C:UsersPublicPicturesSample PicturesDesert.jpg");
zp.ZIPFileList.Add(@"C:UsersPublicPicturesSample Pictures错误文件.jpg");
CompressFile cprFile = new CompressFile();
cprFile.ZipParameter = zp;
string strMessage = cprFile.CompressReturnMsg();

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/126143.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号