C# 压缩文件夹

/// 
/// 压缩文件夹
/// 
/// 文件夹数组
/// 压缩文件输出目录
public static void CreateZip(List strFile, string strZip)
{
     ZipOutputStream outstream = new ZipOutputStream(System.IO.File.Create(strZip));
     outstream.SetLevel(6);
     for (int i = 0, j = strFile.Count; i < j; i++)
     {
          string item = strFile[i];
          if (!Directory.Exists(item))
          {
              continue;
          }
          CreateZipFiles(item, outstream, item);
      }
      outstream.Finish();
      outstream.Close();
}
/// 
/// 递归压缩文件
/// 
/// 待压缩的文件或文件夹路径
/// 打包结果的zip文件路径(类似 D:\WorkSpace\a.zip),全路径包括文件名和.zip扩展名
/// 
private static void CreateZipFiles(string sourceFilePath, ZipOutputStream zipStream, string staticFile)
{
      Crc32 crc = new Crc32();
      string[] filesArray = Directory.GetFileSystemEntries(sourceFilePath);
      foreach (string file in filesArray)
      {
           //如果当前是文件夹,递归
           if (Directory.Exists(file))
           {
                CreateZipFiles(file, zipStream, staticFile);
           }
           else
           {
                //如果是文件,开始压缩
                FileStream fileStream = File.OpenRead(file);

                byte[] buffer = new byte[fileStream.Length];
                fileStream.Read(buffer, 0, buffer.Length);
                string tempFile = file.Substring(staticFile.LastIndexOf("\\") + 1);
                ZipEntry entry = new ZipEntry(tempFile);

                entry.DateTime = DateTime.Now;
                entry.Size = fileStream.Length;
                fileStream.Close();
                crc.Reset();
                crc.Update(buffer);
                entry.Crc = crc.Value;
                zipStream.PutNextEntry(entry);

                zipStream.Write(buffer, 0, buffer.Length);
           }
      }
}

 

你可能感兴趣的:(C#.NET)