解压.zip格式的文件

功能描述:

把.zip格式的文件解压后保存到另外的目录

1、引用ICSharpCode.SharpZipLib,大家可以到网上下载。

2、完成编码,我写的操作方法如下:

/// <summary>
        /// 解压文件,只能解压.zip格式的文件
        /// </summary>
        /// <param name="filePah">.zip格式文件的路径</param>
        /// <param name="savePath">保存的路径</param>
        /// <returns></returns>
        public static string decompress(string filePah,string savePath)
        {
            //返回保存后的路径,在savePath后再加一个自动生成的文件夹,防止文件夹重名
            string requrnPath=null;
            savePath = HttpContext.Current.Server.MapPath(savePath) + "/" + DateTime.Now.ToFileTime();

            //判断是否存在该目录
            if (!Directory.Exists(savePath))
                Directory.CreateDirectory(savePath);

            ZipInputStream inputStream = new ZipInputStream(File.OpenRead(filePah));
            while (true)
            {
                ZipEntry zipEntry = inputStream.GetNextEntry();
                if (zipEntry == null)
                    break;
                //文件目录信息
                string directory;
                if (zipEntry.Name.IndexOf("/")>=0&&zipEntry.IsDirectory)
                {
                    int index = zipEntry.Name.LastIndexOf("/");
                    directory = zipEntry.Name.Substring(0, index);
                    if (!Directory.Exists(savePath+"/"+directory))
                        Directory.CreateDirectory(savePath+"/"+directory);
                    requrnPath = savePath + "/" + zipEntry.Name;
                }
                if (!zipEntry.IsDirectory && zipEntry.Crc != 00000000L)//不说标记文件
                {
                    int i = 1024;
                    byte[] b = new byte[i];
                    if (!Directory.Exists(savePath))
                    {
                        Directory.CreateDirectory(savePath);
                    }
                    FileStream fileStream = File.Create(savePath + "/" + zipEntry.Name);
                    while (true)
                    {
                        i = inputStream.Read(b, 0, b.Length);
                        if (i > 0)
                        {
                            fileStream.Write(b, 0, i);
                        }
                        else
                            break;
                    }
                    fileStream.Close();
                }
            }
            inputStream.Close();
            return requrnPath;
        }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值