`

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2 新增解压缩工具类ZipHelper

阅读更多

  在项目对文件进行解压缩是非常常用的功能,对文件进行压缩存储或传输可以节省流量与空间。压缩文件的格式与方法都比较多,比较常用的国际标准是zip格式。压缩与解压缩的方法也很多,在.NET 2.0开始,在System.IO.Compression中微软已经给我们提供了解压缩的方法GZipStream。对于GZipStream的使用以及优缺点网上已经有非常多的文章,本文主要讲的是利用三方开源组件ICSharpCode.SharpZipLib进行文件的解压缩。

  SharpZipLib地址:http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx

  SharpZipLib是一个使用C#编写的Zip操作类库,是一个开源的C#压缩解压库,应用非常广泛。在VB.NET、C#或其他的.NET语言中都可以使用它创建Zip文件、并进行读取和更新等操作。SharpZipLib是一个完全由c#编写的Zip, GZip, Tar and BZip2 library,可以方便地支持这几种格式的压缩解压缩。SharpZipLib目前的版本为0.86,我们可以直接从上面提供的网站下载dll文件再添加到项目引用中,也可以通过VS提供的包管理工具NuGet把SharpZipLib添加到项目中。NuGet能更方便地把一些dll和文件添加到项目中,而不需要从文件中复制拷贝,推荐使用。使用NuGet添加SharpZipLib到项目中的方法如下图所示,在我们需要SharpZipLib的项目中右键单击“引用”,在弹出的快捷菜单中选择“管理NuGet程序包(N)…”。

 

  在打开的“管理NuGet程序包”对话框,搜索SharpZipLib找到后单击安装即可。

  引用SharpZipLib到项目中后,我们就可以编写相应的加压缩方法,下面将对常用的方法一一分享。

  在使用前必须先添加引用如下:

using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;  

 一、压缩文件夹 

/// <summary>
   /// 压缩文件夹
   /// </summary>
   /// <param name="dirToZip"></param>
   /// <param name="zipedFileName"></param>
   /// <param name="compressionLevel">压缩率0(无压缩)9(压缩率最高)</param>
   public static void ZipDir(string dirToZip, string zipedFileName, int compressionLevel = 9)
   {
       if (Path.GetExtension(zipedFileName) != ".zip")
       {
           zipedFileName = zipedFileName + ".zip";
       }
       using (var zipoutputstream = new ZipOutputStream(File.Create(zipedFileName)))
       {
           zipoutputstream.SetLevel(compressionLevel);
           Crc32 crc = new Crc32();
           Hashtable fileList = GetAllFies(dirToZip);
           foreach (DictionaryEntry item in fileList)
           {
               FileStream fs = new FileStream(item.Key.ToString(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
               byte[] buffer = new byte[fs.Length];
               fs.Read(buffer, 0, buffer.Length);;
               ZipEntry entry = new ZipEntry(Path.GetFileName(item.Key.ToString()))
               {
                   DateTime = (DateTime)item.Value,
                   Size = fs.Length
               };
               fs.Close();
               crc.Reset();
               crc.Update(buffer);
               entry.Crc = crc.Value;
               zipoutputstream.PutNextEntry(entry);
               zipoutputstream.Write(buffer, 0, buffer.Length);
           }
       }
   }

 二、解压文件夹

/// <summary> 
   /// 功能:解压zip格式的文件。 
   /// </summary> 
   /// <param name="zipFilePath">压缩文件路径</param> 
   /// <param name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param> 
   /// <returns>解压是否成功</returns> 
   public static 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;
                           }
                       }
                   }
               }
           }
       }
   }

  三、压缩单个文件

/// <summary>
  /// 压缩单个文件
  /// </summary>
  /// <param name="fileToZip">要进行压缩的文件名,全路径</param>
  /// <param name="zipedFile">压缩后生成的压缩文件名,全路径</param>
  public static void ZipFile(string fileToZip, string zipedFile)
  {
      // 如果文件没有找到,则报错
      if (!File.Exists(fileToZip))
      {
          throw new FileNotFoundException("指定要压缩的文件: " + fileToZip + " 不存在!");
      }
      using (FileStream fileStream = File.OpenRead(fileToZip))
      {
          byte[] buffer = new byte[fileStream.Length];
          fileStream.Read(buffer, 0, buffer.Length);
          fileStream.Close();
          using (FileStream zipFile = File.Create(zipedFile))
          {
              using (ZipOutputStream zipOutputStream = new ZipOutputStream(zipFile))
              {
                  // string fileName = fileToZip.Substring(fileToZip.LastIndexOf("\\") + 1);
                  string fileName = Path.GetFileName(fileToZip);
                  var zipEntry = new ZipEntry(fileName)
                  {
                      DateTime = DateTime.Now,
                      IsUnicodeText = true
                  };
                  zipOutputStream.PutNextEntry(zipEntry);
                  zipOutputStream.SetLevel(5);
                  zipOutputStream.Write(buffer, 0, buffer.Length);
                  zipOutputStream.Finish();
                  zipOutputStream.Close();
              }
          }
      }
  }

 三、压缩多个文件

/// <summary>
   /// 压缩多个目录或文件
   /// </summary>
   /// <param name="folderOrFileList">待压缩的文件夹或者文件,全路径格式,是一个集合</param>
   /// <param name="zipedFile">压缩后的文件名,全路径格式</param>
   /// <param name="password">压宿密码</param>
   /// <returns></returns>
   public static bool ZipManyFilesOrDictorys(IEnumerable<string> folderOrFileList, string zipedFile, string password)
   {
       bool res = true;
       using (var s = new ZipOutputStream(File.Create(zipedFile)))
       {
           s.SetLevel(6);
           if (!string.IsNullOrEmpty(password))
           {
               s.Password = password;
           }
           foreach (string fileOrDir in folderOrFileList)
           {
               //是文件夹
               if (Directory.Exists(fileOrDir))
               {
                   res = ZipFileDictory(fileOrDir, s, "");
               }
               else
               {
                   //文件
                   res = ZipFileWithStream(fileOrDir, s);
               }
           }
           s.Finish();
           s.Close();
           return res;
       }
   }

 五、递归压缩文件夹

/// <summary>
   /// 递归压缩文件夹方法
   /// </summary>
   /// <param name="folderToZip"></param>
   /// <param name="s"></param>
   /// <param name="parentFolderName"></param>
   private static bool ZipFileDictory(string folderToZip, ZipOutputStream s, string parentFolderName)
   {
       bool res = true;
       ZipEntry entry = null;
       FileStream fs = null;
       Crc32 crc = new Crc32();
       try
       {
           //创建当前文件夹
           entry = new ZipEntry(Path.Combine(parentFolderName, Path.GetFileName(folderToZip) + "/")); //加上 “/” 才会当成是文件夹创建
           s.PutNextEntry(entry);
           s.Flush();
           //先压缩文件,再递归压缩文件夹
           var filenames = Directory.GetFiles(folderToZip);
           foreach (string file in filenames)
           {
               //打开压缩文件
               fs = File.OpenRead(file);
               byte[] buffer = new byte[fs.Length];
               fs.Read(buffer, 0, buffer.Length);
               entry = new ZipEntry(Path.Combine(parentFolderName, Path.GetFileName(folderToZip) + "/" + Path.GetFileName(file)));
               entry.DateTime = DateTime.Now;
               entry.Size = fs.Length;
               fs.Close();
               crc.Reset();
               crc.Update(buffer);
               entry.Crc = crc.Value;
               s.PutNextEntry(entry);
               s.Write(buffer, 0, buffer.Length);
           }
       }
       catch
       {
           res = false;
       }
       finally
       {
           if (fs != null)
           {
               fs.Close();
           }
           if (entry != null)
           {
           }
           GC.Collect();
           GC.Collect(1);
       }
       var folders = Directory.GetDirectories(folderToZip);
       foreach (string folder in folders)
       {
           if (!ZipFileDictory(folder, s, Path.Combine(parentFolderName, Path.GetFileName(folderToZip))))
           {
               return false;
           }
       }
       return res;
   }

 利用ICSharpCode.SharpZipLib解压缩辅助类全部代码如下:

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
 
namespace RDIFramework.Utilities
{
    using ICSharpCode.SharpZipLib.Checksums;
    using ICSharpCode.SharpZipLib.Zip;
 
    /// <summary>
    /// ZipHelper.cs
    /// Zip解压缩帮助类
    ///
    /// 修改纪录
    ///    
    ///     2017-03-05 EricHu   创建。
    ///
    /// 版本:1.0
    ///
    /// <author>
    ///        <name>EricHu</name>
    ///        <date>2017-03-05</date>
    /// </author>
    /// </summary>
    public class ZipHelper
    {
        /// <summary>
        /// 压缩文件夹
        /// </summary>
        /// <param name="dirToZip"></param>
        /// <param name="zipedFileName"></param>
        /// <param name="compressionLevel">压缩率0(无压缩)9(压缩率最高)</param>
        public static void ZipDir(string dirToZip, string zipedFileName, int compressionLevel = 9)
        {
            if (Path.GetExtension(zipedFileName) != ".zip")
            {
                zipedFileName = zipedFileName + ".zip";
            }
            using (var zipoutputstream = new ZipOutputStream(File.Create(zipedFileName)))
            {
                zipoutputstream.SetLevel(compressionLevel);
                Crc32 crc = new Crc32();
                Hashtable fileList = GetAllFies(dirToZip);
                foreach (DictionaryEntry item in fileList)
                {
                    FileStream fs = new FileStream(item.Key.ToString(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                    byte[] buffer = new byte[fs.Length];
                    fs.Read(buffer, 0, buffer.Length);;
                    ZipEntry entry = new ZipEntry(Path.GetFileName(item.Key.ToString()))
                    {
                        DateTime = (DateTime)item.Value,
                        Size = fs.Length
                    };
                    fs.Close();
                    crc.Reset();
                    crc.Update(buffer);
                    entry.Crc = crc.Value;
                    zipoutputstream.PutNextEntry(entry);
                    zipoutputstream.Write(buffer, 0, buffer.Length);
                }
            }
        }
 
        /// <summary> 
        /// 获取所有文件 
        /// </summary> 
        /// <returns></returns> 
        public static Hashtable GetAllFies(string dir)
        {
            Hashtable filesList = new Hashtable();
            DirectoryInfo fileDire = new DirectoryInfo(dir);
            if (!fileDire.Exists)
            {
                throw new FileNotFoundException("目录:" + fileDire.FullName + "没有找到!");
            }
 
            GetAllDirFiles(fileDire, filesList);
            GetAllDirsFiles(fileDire.GetDirectories(), filesList);
            return filesList;
        }
 
        /// <summary> 
        /// 获取一个文件夹下的所有文件夹里的文件 
        /// </summary> 
        /// <param name="dirs"></param> 
        /// <param name="filesList"></param> 
        public static void GetAllDirsFiles(IEnumerable<DirectoryInfo> dirs, Hashtable filesList)
        {
            foreach (DirectoryInfo dir in dirs)
            {
                foreach (FileInfo file in dir.GetFiles("*.*"))
                {
                    filesList.Add(file.FullName, file.LastWriteTime);
                }
                GetAllDirsFiles(dir.GetDirectories(), filesList);
            }
        }
 
        /// <summary> 
        /// 获取一个文件夹下的文件 
        /// </summary> 
        /// <param name="dir">目录名称</param>
        /// <param name="filesList">文件列表HastTable</param> 
        public static void GetAllDirFiles(DirectoryInfo dir, Hashtable filesList)
        {
            foreach (FileInfo file in dir.GetFiles("*.*"))
            {
                filesList.Add(file.FullName, file.LastWriteTime);
            }
        }
 
        /// <summary> 
        /// 功能:解压zip格式的文件。 
        /// </summary> 
        /// <param name="zipFilePath">压缩文件路径</param> 
        /// <param name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param> 
        /// <returns>解压是否成功</returns> 
        public static 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;
                                }
                            }
                        }
                    }
                }
            }
        }
 
        /// <summary>
        /// 压缩单个文件
        /// </summary>
        /// <param name="filePath">被压缩的文件名称(包含文件路径),文件的全路径</param>
        /// <param name="zipedFileName">压缩后的文件名称(包含文件路径),保存的文件名称</param>
        /// <param name="compressionLevel">压缩率0(无压缩)到 9(压缩率最高)</param>
        public static void ZipFile(string filePath, string zipedFileName, int compressionLevel = 9)
        {
            // 如果文件没有找到,则报错
            if (!File.Exists(filePath))
            {
                throw new FileNotFoundException("文件:" + filePath + "没有找到!");
            }
            // 如果压缩后名字为空就默认使用源文件名称作为压缩文件名称
            if (string.IsNullOrEmpty(zipedFileName))
            {
                string oldValue = Path.GetFileName(filePath);
                if (oldValue != null)
                {
                    zipedFileName = filePath.Replace(oldValue, "") + Path.GetFileNameWithoutExtension(filePath) + ".zip";
                }
            }
            // 如果压缩后的文件名称后缀名不是zip,就是加上zip,防止是一个乱码文件
            if (Path.GetExtension(zipedFileName) != ".zip")
            {
                zipedFileName = zipedFileName + ".zip";
            }
            // 如果指定位置目录不存在,创建该目录  C:\Users\yhl\Desktop\大汉三通
            string zipedDir = zipedFileName.Substring(0, zipedFileName.LastIndexOf("\\", StringComparison.Ordinal));
            if (!Directory.Exists(zipedDir))
            {
                Directory.CreateDirectory(zipedDir);
            }
            // 被压缩文件名称
            string filename = filePath.Substring(filePath.LastIndexOf("\\", StringComparison.Ordinal) + 1);
            var streamToZip = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            var zipFile = File.Create(zipedFileName);
            var zipStream = new ZipOutputStream(zipFile);
            var zipEntry = new ZipEntry(filename);
            zipStream.PutNextEntry(zipEntry);
            zipStream.SetLevel(compressionLevel);
            var buffer = new byte[2048];
            Int32 size = streamToZip.Read(buffer, 0, buffer.Length);
            zipStream.Write(buffer, 0, size);
            try
            {
                while (size < streamToZip.Length)
                {
                    int sizeRead = streamToZip.Read(buffer, 0, buffer.Length);
                    zipStream.Write(buffer, 0, sizeRead);
                    size += sizeRead;
                }
            }
            finally
            {
                zipStream.Finish();
                zipStream.Close();
                streamToZip.Close();
            }
        }
 
        /// <summary>
        /// 压缩单个文件
        /// </summary>
        /// <param name="fileToZip">要进行压缩的文件名,全路径</param>
        /// <param name="zipedFile">压缩后生成的压缩文件名,全路径</param>
        public static void ZipFile(string fileToZip, string zipedFile)
        {
            // 如果文件没有找到,则报错
            if (!File.Exists(fileToZip))
            {
                throw new FileNotFoundException("指定要压缩的文件: " + fileToZip + " 不存在!");
            }
            using (FileStream fileStream = File.OpenRead(fileToZip))
            {
                byte[] buffer = new byte[fileStream.Length];
                fileStream.Read(buffer, 0, buffer.Length);
                fileStream.Close();
                using (FileStream zipFile = File.Create(zipedFile))
                {
                    using (ZipOutputStream zipOutputStream = new ZipOutputStream(zipFile))
                    {
                        // string fileName = fileToZip.Substring(fileToZip.LastIndexOf("\\") + 1);
                        string fileName = Path.GetFileName(fileToZip);
                        var zipEntry = new ZipEntry(fileName)
                        {
                            DateTime = DateTime.Now,
                            IsUnicodeText = true
                        };
                        zipOutputStream.PutNextEntry(zipEntry);
                        zipOutputStream.SetLevel(5);
                        zipOutputStream.Write(buffer, 0, buffer.Length);
                        zipOutputStream.Finish();
                        zipOutputStream.Close();
                    }
                }
            }
        }
 
        /// <summary>
        /// 压缩多个目录或文件
        /// </summary>
        /// <param name="folderOrFileList">待压缩的文件夹或者文件,全路径格式,是一个集合</param>
        /// <param name="zipedFile">压缩后的文件名,全路径格式</param>
        /// <param name="password">压宿密码</param>
        /// <returns></returns>
        public static bool ZipManyFilesOrDictorys(IEnumerable<string> folderOrFileList, string zipedFile, string password)
        {
            bool res = true;
            using (var s = new ZipOutputStream(File.Create(zipedFile)))
            {
                s.SetLevel(6);
                if (!string.IsNullOrEmpty(password))
                {
                    s.Password = password;
                }
                foreach (string fileOrDir in folderOrFileList)
                {
                    //是文件夹
                    if (Directory.Exists(fileOrDir))
                    {
                        res = ZipFileDictory(fileOrDir, s, "");
                    }
                    else
                    {
                        //文件
                        res = ZipFileWithStream(fileOrDir, s);
                    }
                }
                s.Finish();
                s.Close();
                return res;
            }
        }
 
        /// <summary>
        /// 带压缩流压缩单个文件
        /// </summary>
        /// <param name="fileToZip">要进行压缩的文件名</param>
        /// <param name="zipStream"></param>
        /// <returns></returns>
        private static bool ZipFileWithStream(string fileToZip, ZipOutputStream zipStream)
        {
            //如果文件没有找到,则报错
            if (!File.Exists(fileToZip))
            {
                throw new FileNotFoundException("指定要压缩的文件: " + fileToZip + " 不存在!");
            }
            //FileStream fs = null;
            FileStream zipFile = null;
            ZipEntry zipEntry = null;
            bool res = true;
            try
            {
                zipFile = File.OpenRead(fileToZip);
                byte[] buffer = new byte[zipFile.Length];
                zipFile.Read(buffer, 0, buffer.Length);
                zipFile.Close();
                zipEntry = new ZipEntry(Path.GetFileName(fileToZip));
                zipStream.PutNextEntry(zipEntry);
                zipStream.Write(buffer, 0, buffer.Length);
            }
            catch
            {
                res = false;
            }
            finally
            {
                if (zipEntry != null)
                {
                }
 
                if (zipFile != null)
                {
                    zipFile.Close();
                }
                GC.Collect();
                GC.Collect(1);
            }
            return res;
 
        }
 
        /// <summary>
        /// 递归压缩文件夹方法
        /// </summary>
        /// <param name="folderToZip"></param>
        /// <param name="s"></param>
        /// <param name="parentFolderName"></param>
        private static bool ZipFileDictory(string folderToZip, ZipOutputStream s, string parentFolderName)
        {
            bool res = true;
            ZipEntry entry = null;
            FileStream fs = null;
            Crc32 crc = new Crc32();
            try
            {
                //创建当前文件夹
                entry = new ZipEntry(Path.Combine(parentFolderName, Path.GetFileName(folderToZip) + "/")); //加上 “/” 才会当成是文件夹创建
                s.PutNextEntry(entry);
                s.Flush();
                //先压缩文件,再递归压缩文件夹
                var filenames = Directory.GetFiles(folderToZip);
                foreach (string file in filenames)
                {
                    //打开压缩文件
                    fs = File.OpenRead(file);
                    byte[] buffer = new byte[fs.Length];
                    fs.Read(buffer, 0, buffer.Length);
                    entry = new ZipEntry(Path.Combine(parentFolderName, Path.GetFileName(folderToZip) + "/" + Path.GetFileName(file)));
                    entry.DateTime = DateTime.Now;
                    entry.Size = fs.Length;
                    fs.Close();
                    crc.Reset();
                    crc.Update(buffer);
                    entry.Crc = crc.Value;
                    s.PutNextEntry(entry);
                    s.Write(buffer, 0, buffer.Length);
                }
            }
            catch
            {
                res = false;
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                }
                if (entry != null)
                {
                }
                GC.Collect();
                GC.Collect(1);
            }
            var folders = Directory.GetDirectories(folderToZip);
            foreach (string folder in folders)
            {
                if (!ZipFileDictory(folder, s, Path.Combine(parentFolderName, Path.GetFileName(folderToZip))))
                {
                    return false;
                }
            }
            return res;
        }
    }
}

 

 

分享到:
评论

相关推荐

    c# 解压缩类 ICSharpCode.SharpZipLib.dll

    3. **解压缩单个条目**:`ZipInputStream`类是处理ZIP文件输入流的工具,可以通过`GetNextEntry()`方法获取下一个条目,然后使用`Read()`方法将数据写入目标流,实现文件的解压缩。 4. **错误处理和日志记录**:...

    C#中ZipHelper 压缩和解压帮助类

    总结,C#中的ZipHelper类是利用ICSharpCode.SharpZipLib库构建的实用工具,它提供了方便、高效且功能丰富的压缩和解压缩解决方案。无论是在日常开发还是大型项目中,ZipHelper都能成为处理文件压缩需求的强大助手。

    ZipHelper完整项目

    【标题】"ZipHelper完整项目"是一个以C++编写的压缩辅助工具,它利用了zlib库进行文件的压缩操作。这个项目适用于那些需要在Windows环境下处理文件压缩的开发者,特别是使用Visual Studio作为开发环境的人。 【描述...

    .netcore+vue 实现压缩文件下载功能.docx

    在.NET Core中,我们可以通过引入ZipHelper工具类来实现对文件夹的压缩操作。ZipHelper类封装了文件夹压缩的逻辑,能够将指定的文件夹压缩成ZIP格式的压缩包。开发者仅需要指定待压缩的文件夹路径,即可得到一个...

    ZipHelper1.1

    在信息技术领域,文件压缩与解压是日常工作中不可或缺的一部分,而ZIP格式作为广泛使用的压缩格式,其兼容性和实用性备受推崇。然而,在处理包含中文路径名的文件时,可能会遇到一些挑战。ZipHelper1.1是一个专门...

    后台实现文件夹压缩

    这个库由ICSharpCode项目开发,被广泛用于.NET Framework应用中,用于处理文件的压缩和解压缩需求。而`ZipHelper.cs` 文件则很可能是一个自定义的C#类,它封装了`ICSharpCode.SharpZipLib`库的功能,提供了一套简洁...

    JAVA文件压缩与解压缩实践毕设论文源代码程序

    在Java编程语言中,文件的压缩与解压缩是常见的任务,尤其在数据存储、传输以及备份等场景下显得尤为重要。本实践毕设论文主要探讨了如何利用Java进行文件的压缩和解压缩操作,通过源代码程序来实现这一功能。下面...

    基于zip4j开源框架实现android解压带有密码的zip文件(进度条显示)

    在Android开发中,有时我们需要处理压缩文件,例如解压或压缩数据。对于这种需求,可以使用各种库,其中`zip4j`是一个流行的开源框架,它提供了方便的API来处理ZIP文件,包括设置密码和显示进度条等功能。本文将详细...

    ZIPHelper.cs

    压缩包帮助类

    asp.net生成缩略图示例方法分享

    当我我这里说的正方形是先按比例压缩,然后加一个固定的白底 然后居中显示。 代码: 新建outputimg.ashx 代码如下://调整图片大小private static Size NewSize(int maxWidth, int maxHeight, int Width, int Height...

    C#实现zip压缩和解压帮助类

    在.NET框架中,C#程序员可以使用不同的库来实现ZIP文件的压缩和解压缩功能。本文将详细探讨如何使用C#编写一个自定义的帮助类,以便处理ZIP文件的压缩和解压操作。我们将重点关注`SharpZipLib`库,因为根据提供的...

    java 实现Excel压缩成Zip导出.docx

    在实现中,需要使用到两个重要的工具类:FileExportHelper 和 ZipHelper。FileExportHelper 负责将数据导出为 Excel 文件,而 ZipHelper 负责将多个 Excel 文件压缩成 Zip 包。通过这两个工具类,可以轻松地实现 ...

    Helper Master

    Public class BarCodeHelper 条形码帮助类 Public class Base64DEncrypt Base64加解密帮助类 Public class BindDataControl 数据展示控件 绑定数据类 ...Public class ZipHelper Zip压缩、解压缩类

    java压缩目录的类

    在Java编程语言中,`java.util.zip` 包提供了对压缩和解压缩的支持,包括 `ZipOutputStream` 类,它用于创建ZIP格式的压缩文件。然而,`ZipOutputStream` 在处理目录压缩时,可能会生成的ZIP文件与某些工具或平台的...

    java压缩demo

    一个我做好的java压缩/解压缩文件的demo,一个ZipHelper类+ant.jar包,解决了压缩或解压缩后中文乱码的问题!,可解压嵌套文件夹,用的过程只需new一个ZipHelper,调用该类方法即可,demo里有详细说明!^_^

    Util:Cisasoft Java 工具类

    Cisasoft Java 工具类 ChineseHelper 汉字繁体简体转换 PinyinHelper 读取汉字,解析拼音 EnglishHelper 英文字符串处理 QRCodeHelper 二维码工具 ImageHelper 图片处理工具,图片格式之间相互转换,图片加文字水印...

    C#封装的Utilities基础类库.rar

    "C#封装的Utilities基础类库.rar"提供了一组实用工具类,帮助开发者快速高效地完成这些常见任务。这个类库涵盖了多个核心功能模块,包括JSON和XML操作、字符串处理、验证码生成、压缩与解压缩、文件操作以及各种验证...

    简单的php压缩文件帮助类.zip

    在PHP编程中,压缩文件是常见的任务之一,用于节省存储空间和提高数据传输效率。本篇文章将详细解析标题为“简单的php压缩文件帮助类...在实际应用中,可以结合这个类库轻松地完成文件压缩、解压缩、添加、删除等任务。

    Java8 Zip 压缩与解压缩的实现

    Java8 Zip 压缩与解压缩的实现 在 Java8 中,压缩和解压缩都是非常重要的操作,特别是在网络上传输文件或存储文件时。今天,我们将探讨 Java8 中的 Zip 压缩和解压缩的实现。 Zip 压缩 Zip 压缩是将多个文件或...

Global site tag (gtag.js) - Google Analytics