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);
    }
    }
    }
  • 相关阅读:
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    64位WIN7系统 下 搭建Android开发环境
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
  • 原文地址:https://www.cnblogs.com/muxueyuan/p/10096407.html
Copyright © 2011-2022 走看看