zoukankan      html  css  js  c++  java
  • C#压缩文件夹

    using System;
    using System.Collections.Generic;
    using System.Text;

    ///第三方dll
    using ICSharpCode.SharpZipLib;
    using ICSharpCode.SharpZipLib.Checksums;
    using ICSharpCode.SharpZipLib.Zip;
    using System.IO;
    using log4net;
    using log4net.Config;
    using System.Text.RegularExpressions;

    namespace Test.BLL
    {
    public class TestZipFile
    {
    protected static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    /// <summary>
    /// 加密压缩包的方法
    /// </summary>
    /// <param name="strFile"></param>
    /// <param name="strZip"></param>
    /// <param name="sPassWord"></param>
    public void ZipFile(string strFile, string strZip, string sPassWord)
    {
    if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar)
    strFile += Path.DirectorySeparatorChar;
    ZipOutputStream s = new ZipOutputStream(File.Create(strZip));
    if (sPassWord != "")
    {
    s.Password = sPassWord; //Zip压缩文件密码
    }
    s.SetLevel(6);
    zip(strFile, s, strFile);
    s.Finish();
    s.Close();
    }
    /// <summary>
    /// 压缩文件夹
    /// </summary>
    /// <param name="strFile"></param>
    /// <param name="strZip"></param>
    /// <param name="sPassWord"></param>
    public void ZipFile(string strFile, string strZip)
    {
    if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar)
    strFile += Path.DirectorySeparatorChar;
    ZipOutputStream s = new ZipOutputStream(File.Create(strZip));
    s.SetLevel(6);
    zip(strFile, s, strFile);
    s.Finish();
    s.Close();
    }
    private void zip(string strFile, ZipOutputStream s, string staticFile)
    {
    if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar) strFile += Path.DirectorySeparatorChar;
    Crc32 crc = new Crc32();
    string[] filenames = Directory.GetFileSystemEntries(strFile);
    foreach (string file in filenames)
    {

    if (Directory.Exists(file))
    {
    zip(file, s, staticFile);
    }

    else // 否则直接压缩文件
    {
    //打开压缩文件
    FileStream fs = File.OpenRead(file);

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

    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);
    }
    }
    }

    }
    }

  • 相关阅读:
    【原】Storm序列化
    【原】Storm学习资料推荐
    【原】Storm实战
    【原】Storm环境搭建
    Autofac基本使用(转载)
    Autofac学习之三种生命周期:InstancePerLifetimeScope、SingleInstance、InstancePerDependency
    RabbitMQ 默认端口号
    RabbitMQ-客户端
    百度地图-生成器
    uploadify 配置后,页面显示无效果
  • 原文地址:https://www.cnblogs.com/yangdunqin/p/CompressedFolder.html
Copyright © 2011-2022 走看看