C#解压ZIP文件





using System;  
using System.Text;  
using System.Collections;  
using System.IO;  
using System.Diagnostics;  
using System.Runtime.Serialization.Formatters.Binary;  
using System.Data;  
  
using ICSharpCode.SharpZipLib.Zip;  
using ICSharpCode.SharpZipLib.Zip.Compression;  
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;   




namespace XML
{
    class UNZIP
    {




    /// <summary>  
    /// 功能:解压文件  
    /// creator chaodongwang 2009-11-11  
    /// </summary>  




        /// <summary>  
        /// 功能:解压zip格式的文件。  
        /// </summary>  
        /// <param name="zipFilePath">压缩文件路径</param>  
        /// <param name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param>  
        /// <param name="err">出错信息</param>  
        /// <returns>解压是否成功</returns>  
        public void UnZip(string zipFilePath, string unZipDir)  
        {  
          
            if (zipFilePath == string.Empty)  
            {  
                throw new Exception("压缩文件不能为空!");  
            }  
            if (!File.Exists(zipFilePath))  
            {  
                throw new System.IO.FileNotFoundException("压缩文件不存在!");  
            }




            //文件夹里建一个带有时间戳的文件夹
            unZipDir += "weather"+DateTime.Now.ToString("yyyyMMddHHmmsss");


    
            //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹  
            if (unZipDir == string.Empty)  
                unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));  


            if (!unZipDir.EndsWith("\\"))  
                unZipDir += "\\";
       
  


           if (!Directory.Exists(unZipDir))  
                Directory.CreateDirectory(unZipDir);


        
  
            using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))  
            {  
  
                ZipEntry theEntry;  
                while ((theEntry = s.GetNextEntry()) != null)  
                {  
                    string directoryName = Path.GetDirectoryName(theEntry.Name);  
                    string fileName = Path.GetFileName(theEntry.Name);  
                    if (directoryName.Length > 0)  
                    {  
                        Directory.CreateDirectory(unZipDir + directoryName);
                        //将解压后的文件放到带时间戳的文件夹里
                 
                       
                    }  
                    if (!directoryName.EndsWith("\\"))  
                        directoryName += "\\";  
                    if (fileName != String.Empty)  
                    {
                       
                        using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))
                   
                        {  
  
                            int size = 2048;  
                            byte[] data = new byte[2048];  
                            while (true)  
                            {  
                                size = s.Read(data, 0, data.Length);  
                                if (size > 0)  
                                {  
                                    streamWriter.Write(data, 0, size);  
                                }  
                                else  
                                {  
                                    break;  
                                }  
                            }  
                        }  
                    }  
                }  
            }  
        }  
    }   



        ///













  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值