zoukankan      html  css  js  c++  java
  • ICSharpCode.SharpZipLib.Zip 压缩文件

    public class ZipFileHelper
    {
    List<string> urls = new List<string>();
    void Director(string dir)
    {
    DirectoryInfo d = new DirectoryInfo(dir);
    FileSystemInfo[] fsinfos = d.GetFileSystemInfos();
    foreach (FileSystemInfo fsinfo in fsinfos)
    {
    if (fsinfo is DirectoryInfo) //判断是否为文件夹
    {
    Director(fsinfo.FullName);//递归调用
    }
    else
    {
    // Console.WriteLine(fsinfo.FullName);//输出文件的全部路径
    urls.Add(fsinfo.FullName);
    }
    
    }
    }
    ///<summary>
    /// 创建ZIP文件
    ///</summary>
    public void CreateZipFile(string dir, string sTempFile, string sPassWord)
    {
    try
    {
    Director(dir);
    var files = urls.ToArray();
    using (ZipOutputStream s = new ZipOutputStream(File.Create(sTempFile)))
    {
    s.SetLevel(9); // 压缩级别 0-9
    if (sPassWord != "")
    {
    s.Password = sPassWord; //Zip压缩文件密码
    }
    
    byte[] buffer = new byte[4096]; //缓冲区大小
    
    foreach (string file in files)
    {
    if (!string.IsNullOrEmpty(file))
    {
    if (File.Exists(file))
    {
    ZipEntry entry = new ZipEntry(Path.GetFileName(file));
    entry.DateTime = DateTime.Now;
    s.PutNextEntry(entry);
    
    using (FileStream fs = File.OpenRead(file))
    {
    int sourceBytes;
    do
    {
    sourceBytes = fs.Read(buffer, 0, buffer.Length);
    s.Write(buffer, 0, sourceBytes);
    } while (sourceBytes > 0);
    }
    }
    else
    {
    //logger.Error("文件:" + file + "不存在。");
    }
    }
    }
    
    s.Finish();
    s.Close();
    }
    }
    catch (Exception ex)
    {
    //logger.Error("压缩文件时异常!");
    //logger.Error("异常描述:	" + ex.Message);
    //logger.Error("异常方法:	" + ex.TargetSite);
    //logger.Error("异常堆栈:	" + ex.StackTrace);
    }
    }
    
    /// <summary>
    /// 
    /// </summary>
    /// <param name="files">放入ZIP的文件路劲(含文件名)</param>
    /// <param name="sTempFile">创建的ZIP文件路劲(含文件名)</param>
    /// <param name="sPassWord">ZIP文件密码</param>
    /// <param name="folderNames">存放到ZIP中的文件夹名,空代表放在顶级目录</param>
    public void CreateZipFileMutilFolder(string[] files, string sTempFile, string sPassWord, string[] folderNames)
    {
    try
    {
    using (ZipOutputStream s = new ZipOutputStream(File.Create(sTempFile)))
    {
    s.SetLevel(9); // 压缩级别 0-9
    if (sPassWord != "")
    {
    s.Password = sPassWord; //Zip压缩文件密码
    }
    
    byte[] buffer = new byte[4096]; //缓冲区大小
    
    int i = 0;
    foreach (string file in files)
    {
    if (!string.IsNullOrEmpty(file))
    {
    if (File.Exists(file))
    {
    ZipEntry entry = new ZipEntry((string.IsNullOrEmpty(folderNames[i]) ? "" : (folderNames[i] + "\")) + Path.GetFileName(file));
    entry.DateTime = DateTime.Now;
    s.PutNextEntry(entry);
    
    using (FileStream fs = File.OpenRead(file))
    {
    int sourceBytes;
    do
    {
    sourceBytes = fs.Read(buffer, 0, buffer.Length);
    s.Write(buffer, 0, sourceBytes);
    } while (sourceBytes > 0);
    }
    }
    else
    {
    //logger.Error("文件:" + file + "不存在。");
    }
    }
    
    i++;
    }
    
    s.Finish();
    s.Close();
    }
    }
    catch (Exception ex)
    {
    //logger.Error("压缩文件时异常!");
    //logger.Error("异常描述:	" + ex.Message);
    //logger.Error("异常方法:	" + ex.TargetSite);
    //logger.Error("异常堆栈:	" + ex.StackTrace);
    }
    }
    }
  • 相关阅读:
    android模拟器加速
    QtEmbedded鼠标驱动流程分析(上)
    QML Tutorial 1 Basic Types
    android 版本
    【转】右键菜单大揭密
    【转】设置右键显示/隐藏系统文件
    【转】自己做的登录界面五款正常尺寸+一款宽屏【手把手教You如何制作登录界面】
    【转】如何添加鼠标右键菜单里的快捷图标
    【转】鼠标右键菜单设置大全
    【技术贴】我的文档不见了,我的文档消失了,我的电脑没有我的文档的解决办法。
  • 原文地址:https://www.cnblogs.com/muxueyuan/p/10096407.html
Copyright © 2011-2022 走看看