解壓文件

前段時間做了一個自動發佈的程序,需要解壓縮.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();
              
            }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章