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

    }
    }

  • 相关阅读:
    mtext中的las参数的作用
    并行与CPE
    根据局部性得出最优矩阵乘法写法
    cache中的thrashing问题和应对办法
    csapp(3e)的bomblab的phase_6详解(没有详细到逐行解析的程度)
    计划
    遇到问题怎么处理?
    数据对齐的几问
    python进阶(八、mysql:完整性约束)
    python进阶(七、mysql:表操作、数据操作、数据类型)
  • 原文地址:https://www.cnblogs.com/yangdunqin/p/CompressedFolder.html
Copyright © 2011-2022 走看看