C#调用Ionic.Zip类压缩文件夹

Note:网上找到的资源记录一下

遗留问题:保存的zip文件含有多级目录,暂时未找到去除多级目录的方法

/// <summary>
/// 压缩ZIP文件
/// 支持多文件和多目录,或是多文件和多目录一起压缩
/// </summary>
/// <param name="list">待压缩的文件或目录集合</param>
/// <param name="strZipName">压缩后的文件名</param>
/// <param name="IsDirStruct">是否按目录结构压缩</param>
/// <returns>压缩文件地址</returns>

public static string CompressMulti(List<string> list, string strZipName, bool IsDirStruct)
{
string filePath = Base.staticValue.root + "/Temp/Fun/AttachAdd/";
try
{
using (ZipFile zip = new ZipFile(filePath + "文件.zip", Encoding.Default))//设置编码,解决压缩文件时中文乱码
{
foreach (string path in list)
{
string fileName = Path.GetFileName(path);//取目录名称
string currentDirectory = Directory.GetCurrentDirectory();
//如果是目录
Directory.SetCurrentDirectory(filePath); // 临时切换当前目录到 /Fun/Temp
//if (Directory.Exists(path))
//{
// if (IsDirStruct)//按目录结构压缩
// {
// zip.AddDirectory(filePath, fileName);
// }
// else//目录下的文件都压缩到Zip的根目录
// {
// if (Directory.Exists(path))
// zip.AddDirectory(path);// 恢复当前目录
// }
//}
// Com.Optlog.addErr(path, "path1" + path);
// zip.AddDirectory(path);
if (File.Exists(path))//如果是文件
{
// zip.AddFile(path);
zip.AddFile(@path);
// Com.Optlog.addErr(path, "path" + path);
}
Directory.SetCurrentDirectory(currentDirectory); // 恢复当前目录
}

zip.Save();//压缩
return filePath + "list.zip";
}
}
catch (Exception)
{
return "";
}
}

原文地址:https://www.cnblogs.com/sl9981/p/11360884.html

时间: 2024-10-11 02:25:32

C#调用Ionic.Zip类压缩文件夹的相关文章

php自带压缩类压缩文件夹

// 压缩文件夹 function addFileToZip($path,$zip){ $handler=opendir($path); //打开当前文件夹由$path指定. while(($filename=readdir($handler))!==false){ if($filename != "." && $filename != ".."){//文件夹文件名字为'.'和'..',不要对他们进行操作 if(is_dir($path."

C#压缩文件夹至zip,不包含所选文件夹【转+修改】

转自园友:jimcsharp的博文C#实现Zip压缩解压实例[转] 在此基础上,对其中的压缩文件夹方法略作修正,并增加是否对父文件夹进行压缩的方法.(因为笔者有只压缩文件夹下的所有文件,却不想将选中的文件夹打入压缩文件的需求),话不多说,上代码:其中需要依赖ICSharpCode.SharpZipLib.dll: 之后,新建一个类,代码如下: using System; using System.Collections.Generic; using System.Linq; using Syst

Java 压缩文件夹工具类(包含解压)

依赖jar <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.18</version> </dependency> CompressUtils.java package utils; import java.io.BufferedInputStream;

C#利用SharpZipLib解压或压缩文件夹实例操作

最近要做一个项目涉及到C#中压缩与解压缩的问题的解决方法,大家分享. 这里主要解决文件夹包含文件夹的解压缩问题. )下载SharpZipLib.dll,在http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx中有最新免费版本,“Assemblies for .NET 1.1, .NET 2.0, .NET CF 1.0, .NET CF 2.0: Download [297 KB] ”点击Download可以下载,解压后里边

Java使用线程池递归压缩文件夹下面的所有子文件

本文将介绍Java中利用线程池递归的方式压缩文件夹下面的所有子文件,具体方法如下: Gzip单个文件压缩 对于单个文件使用GZip压缩. package date0805.demo1; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream

C#压缩文件夹

using System;using System.Collections.Generic;using System.Text; ///第三方dllusing ICSharpCode.SharpZipLib;using ICSharpCode.SharpZipLib.Checksums;using ICSharpCode.SharpZipLib.Zip;using System.IO;using log4net;using log4net.Config;using System.Text.Reg

Beyond Compare同步压缩文件夹的步骤

Beyond Compare是一款功能强大的对比软件,其中压缩文件和其他文档类型,和对比普通文件夹相同,都可以内置扩展用于对比和更新它们的内容.那么在使用Beyond Compare软件进行文件夹同步操作时,压缩文件夹也可以同步吗?本节内容主要讲解,设置Beyond Compare同步压缩文件的操作方法. 具体操作步骤如下所示 步骤一:打开Beyond Compare软件,选择文件夹同步会话,打开会话操作界面.单击“浏览”按钮选择需要同步的文件夹,如下图图例所示,左右两侧窗格内的压缩文件以普通文

怎么在Beyond Compare中同步压缩文件夹

Beyond Compare 4 中文版作为一款功能强大范围广泛的文件对比工具,在使用过程中你会发现它有很多非常贴心便捷的功能.比如其在对比文件夹的过程中,如果你需要把文件夹压缩,那么你在对比的过程中,可以同步的压缩文件夹.下面本教程就来给大家介绍介绍怎么在Beyond Compare中同步压缩文件夹? 原文:http://www.beyondcompare.cc/jiqiao/yasuo-wenjianjia.html 具体操作步骤如下所示 步骤一:打开Beyond Compare软件,选择文

C#压缩文件夹坑~

dotNet疯狂之路No.29  今天很残酷,明天更残酷,后天很美好,但是绝大部分人是死在明天晚上,只有那些真正的英雄才能见到后天的太阳.  We're here to put a dent in the universe. Otherwise why else even be here?   开始从网上找了个压缩的示例  我去坑的不要不要的 没办法重新找 都是复制来复制去 没啥意思 前提:ICSharpCode.SharpZipLib.dll引用 创建一个类 public class ZipC