解压文件

前段时间做了一个自动发布的程序,需要解压缩.zip 结尾的文件,今天要做一个解压.jar 的文件,把原来的解压.zip的代码找回来试试,也可以解压.jar 文件的.呵呵,实在是比较高兴!

  /// <summary>
        /// 解压缩一个 zip 文件。
        /// </summary>
        /// <param name="zipFileName">要解压的 zip 文件</param>
        /// <param name="extractLocation">zip 文件的解压目录</param>
        /// <param name="password">zip 文件的密码。</param>
        /// <param name="overWrite">是否覆盖已存在的文件。</param>
          
            private void UnZipDir(string zipFileName, string extractLocation, string password, bool overWrite)
            {
              
                string myExtractLocation = extractLocation;
                if (myExtractLocation == "")
                    myExtractLocation = Directory.GetCurrentDirectory();
                if (!myExtractLocation.EndsWith(@"/"))
                    myExtractLocation = myExtractLocation + @"/";
                ZipInputStream s = new ZipInputStream(File.OpenRead(zipFileName));
                s.Password = password;
                ZipEntry theEntry;
              
                while ((theEntry = s.GetNextEntry()) != null)//判断下一个zip 接口是否未空
                {
                    string directoryName = "";
                    string pathToZip = "";
                    pathToZip = theEntry.Name;

                    if (pathToZip != "")
                        directoryName = Path.GetDirectoryName(pathToZip) + @"/";
                    string fileName = Path.GetFileName(pathToZip);
                    Directory.CreateDirectory(myExtractLocation + directoryName);
                    if (fileName != "")
                    {
                        try
                        {
                            if ((File.Exists(myExtractLocation + directoryName + fileName) && overWrite) || (!File.Exists(myExtractLocation + directoryName + fileName)))
                            {
                                FileStream streamWriter = File.Create(myExtractLocation + directoryName + fileName);
                                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;
                                }
                                streamWriter.Close();
                            }
                        }
                        catch (ZipException ex)
                        {
                            FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "log.txt", FileMode.OpenOrCreate, FileAccess.Write);
                            StreamWriter sw = new StreamWriter(fs);
                            sw.WriteLine(ex.Message);
                        }
                    }
                }
                s.Close();
              
            }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值