C#对文件进行解压、压缩操作

原创 2018年04月17日 20:59:59
 //===================================================压缩用的是库函数
        public static void ZipDirectory(string folderToZip, string zipedFileName)
        {
            ZipDirectory(folderToZip, zipedFileName, string.Empty, true, string.Empty, string.Empty, true);
        }


        /// <summary>
        /// 压缩文件夹
        /// </summary>
        /// <param name="folderToZip">需要压缩的文件夹</param>
        /// <param name="zipedFileName">压缩后的Zip完整文件名(如D:\test.zip)</param>
        /// <param name="isRecurse">如果文件夹下有子文件夹,是否递归压缩</param>
        /// <param name="password">解压时需要提供的密码</param>
        /// <param name="fileRegexFilter">文件过滤正则表达式</param>
        /// <param name="directoryRegexFilter">文件夹过滤正则表达式</param>
        /// <param name="isCreateEmptyDirectories">是否压缩文件中的空文件夹</param>

        public static void ZipDirectory(string folderToZip, string zipedFileName, string password, bool isRecurse, string fileRegexFilter, string directoryRegexFilter, bool isCreateEmptyDirectories)
        {
            FastZip fastZip = new FastZip();
            fastZip.CreateEmptyDirectories = isCreateEmptyDirectories;
            fastZip.Password = password;
            fastZip.CreateZip(zipedFileName, folderToZip, isRecurse, fileRegexFilter, directoryRegexFilter);
        }


        //===================================================解压用的是库函数
        /// <summary>  
        /// 功能:解压zip格式的文件。  
        /// </summary>  
        /// <param name="zipFilePath">压缩文件路径</param>  
        /// <param name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param>  
        /// <returns>解压是否成功</returns>  
        public void UnZip(string zipFilePath, string unZipDir)
        {
            if (zipFilePath == string.Empty)
            {
                throw new Exception("压缩文件不能为空!");
            }
            if (!File.Exists(zipFilePath))
            {
                throw new FileNotFoundException("压缩文件不存在!");
            }
            //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹  
            if (unZipDir == string.Empty)
                unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
            if (!unZipDir.EndsWith("/"))
                unZipDir += "/";
            if (!Directory.Exists(unZipDir))
                Directory.CreateDirectory(unZipDir);

            using (var s = new ZipInputStream(File.OpenRead(zipFilePath)))
            {

                ZipEntry theEntry;
                while ((theEntry = s.GetNextEntry()) != null)
                {
                    string directoryName = Path.GetDirectoryName(theEntry.Name);
                    string fileName = Path.GetFileName(theEntry.Name);
                    if (!string.IsNullOrEmpty(directoryName))
                    {
                        Directory.CreateDirectory(unZipDir + directoryName);
                    }
                    if (directoryName != null && !directoryName.EndsWith("/"))
                    {
                    }
                    if (fileName != String.Empty)
                    {
                        using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))
                        {

                            int size;
                            byte[] data = new byte[2048];
                            while (true)
                            {
                                size = s.Read(data, 0, data.Length);
                                if (size > 0)
                                {
                                    streamWriter.Write(data, 0, size);
                                }
                                else
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
用的是 ICSharpCode.SharpZipLib,这个也是强烈推荐所有C#新手用的。解压压缩都有很好的函数,直接可以拿过来用,网上dll下载之后直接在项目里引用就行了。很方便。说实话我没看懂这个函数,我也懒得看了,直接拿来用了...

ODBC文件DSN 的结构

                       ODBC文件DSN 的小秘密1. 用附件带的WORDPAD文本编辑器,  建立一后缀名为 .DSN的文件,  格式如下, 然后按文本格式存起来:注意: 格...
  • greenlea
  • greenlea
  • 2000-12-14 18:44:00
  • 974

利用huffman编码对文件进行压缩和解压

  • 2015年01月09日 17:17
  • 5KB
  • 下载

c#打包文件解压缩

  • 2015年12月11日 15:24
  • 6KB
  • 下载

c#使用SharpZipLib对二进制数据进行压缩和解压

首先需要下载SharpZipLib,下载地址:http://icsharpcode.github.io/SharpZipLib/ 需要引入命名空间: using ICSharpCode.Sha...
  • zgjllf1011
  • zgjllf1011
  • 2018-01-31 18:10:36
  • 192

C#封装的文件压缩和解压缩类

using System; using System.IO; using System.Diagnostics; using Microsoft.Win32; using ICSharpCode.S...
  • qq_27462223
  • qq_27462223
  • 2017-08-18 12:05:36
  • 232

Java实现文件的压缩与解压

在开发过程中,有时需要对用户上传的文件进行一个压缩操作,以节约硬盘空间,那么用Java怎么实现文件的压缩与解压呢?很简单,Java为我们提供了一个包,专门负责文件的压缩与解压的,那个包就是java.u...
  • qq969422014
  • qq969422014
  • 2015-05-08 18:17:00
  • 6533

使用Zlib对内存流及标准输入流进行压缩与解压缩

使用Zlib对内存流及标准输入流进行压缩与解压缩,以下是拼接官网zlib源代码文件的顺序。  zconf.h  zlib.h  zutil.h  gzguts.h  zutil.c  adler32....
  • i7thTool
  • i7thTool
  • 2017-01-06 09:07:44
  • 1061

C#中压缩/解压缩7-zip文件的方法

使用C#压缩/解压缩7-zip文件 7-Zip 简介   7-Zip 是一款号称有着现今最高压缩比的压缩软件,它不仅支持独有的 7z 文件格式,而且还支持各种其它压缩文件格式,其中包...
  • autumn20080101
  • autumn20080101
  • 2016-07-20 08:55:12
  • 493

Huffman压缩/解压缩 Szip(Huffman算法及应用)

  • 2008年12月28日 11:58
  • 138KB
  • 下载

C# 使用WinRar命令压缩和解压缩

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We...
  • smartsmile2012
  • smartsmile2012
  • 2015-06-12 10:56:30
  • 6304
收藏助手
不良信息举报
您举报文章:C#对文件进行解压、压缩操作
举报原因:
原因补充:

(最多只允许输入30个字)