/// <summary> /// 解压Zip包; /// </summary> /// <param name="fileBytes">Zip包字节数组</param> /// <param name="outputPath">解压输出路径</param> /// <param name="password">解压密码</param> /// <param name="unzipCallback">UnzipCallback对象,负责回调</param> /// <returns></returns> public static bool UnzipFile(byte[] fileBytes, string outputPath, string password = null, UnzipCallback unzipCallback = null) { if ((null == fileBytes) || string.IsNullOrEmpty(outputPath)) { if (null != unzipCallback) { unzipCallback.OnFinished(false); } return(false); } var result = UnzipFile(new MemoryStream(fileBytes), outputPath, password, unzipCallback); if (!result) { if (null != unzipCallback) { unzipCallback.OnFinished(false); } } return(result); }
/// <summary> /// 解压Zip包; /// </summary> /// <param name="filePathName">Zip包的文件路径名</param> /// <param name="outputPath">解压输出路径</param> /// <param name="password">解压密码</param> /// <param name="unzipCallback">UnzipCallback对象,负责回调</param> /// <returns></returns> public static bool UnzipFile(string filePathName, string outputPath, string password = null, UnzipCallback unzipCallback = null) { if (string.IsNullOrEmpty(filePathName) || string.IsNullOrEmpty(outputPath)) { if (null != unzipCallback) { unzipCallback.OnFinished(false); } return(false); } try { return(UnzipFile(File.OpenRead(filePathName), outputPath, password, unzipCallback)); } catch (System.Exception e) { LogHelper.PrintError($"[SharpZipLibHelper.UnzipFile]: {e.ToString()}"); if (null != unzipCallback) { unzipCallback.OnFinished(false); } return(false); } }
//解压Zip包 public static bool UnzipFile(string pZipFilePath, //zip文件路径 string pOutPath, //解压路径 string pPassword = null, //密码 UnzipCallback pCB = null) //回调 { if (string.IsNullOrEmpty(pZipFilePath) || string.IsNullOrEmpty(pOutPath)) { pCB?.OnFinished(false); return(false); } return(UnzipFile(File.OpenRead(pZipFilePath), pOutPath, pPassword, pCB)); }
//解压Zip包 public static bool UnzipFile(byte[] pFileBytes, //zip文件二进制数据 string pOutPath, //解压目录 string pPassword = null, //密码 UnzipCallback pCB = null) //回调 { if (null == pFileBytes || string.IsNullOrEmpty(pOutPath)) { pCB?.OnFinished(false); return(false); } return(UnzipFile(new MemoryStream(pFileBytes), pOutPath, pPassword, pCB)); }
/// <summary> /// 解压Zip包 /// </summary> /// <param name="_inputStream">Zip包输入流</param> /// <param name="_outputPath">解压输出路径</param> /// <param name="_password">解压密码</param> /// <param name="_unzipCallback">UnzipCallback对象,负责回调</param> /// <returns></returns> public static bool UnzipFile(Stream _inputStream, string _outputPath, string _password = null, UnzipCallback _unzipCallback = null) { if ((null == _inputStream) || string.IsNullOrEmpty(_outputPath)) { if (null != _unzipCallback) { _unzipCallback.OnFinished(false); } return(false); } // 创建文件目录 if (!Directory.Exists(_outputPath)) { Directory.CreateDirectory(_outputPath); } // 解压Zip包 ZipEntry entry = null; using (ZipInputStream zipInputStream = new ZipInputStream(_inputStream)) { if (!string.IsNullOrEmpty(_password)) { zipInputStream.Password = _password; } while (null != (entry = zipInputStream.GetNextEntry())) { if (string.IsNullOrEmpty(entry.Name)) { continue; } if ((null != _unzipCallback) && !_unzipCallback.OnPreUnzip(entry)) { continue; // 过滤 } string filePathName = Path.Combine(_outputPath, entry.Name); // 创建文件目录 if (entry.IsDirectory) { Directory.CreateDirectory(filePathName); continue; } // 写入文件 try { using (FileStream fileStream = File.Create(filePathName)) { byte[] bytes = new byte[1024]; while (true) { int count = zipInputStream.Read(bytes, 0, bytes.Length); if (count > 0) { fileStream.Write(bytes, 0, count); } else { if (null != _unzipCallback) { _unzipCallback.OnPostUnzip(entry); } break; } } } } catch (System.Exception _e) { Debug.LogError("[ZipUtility.UnzipFile]: " + _e.ToString()); if (null != _unzipCallback) { _unzipCallback.OnFinished(false); } return(false); } } } if (null != _unzipCallback) { _unzipCallback.OnFinished(true); } return(true); }
/// <summary> /// 解压Zip包 /// </summary> /// <param name="_fileBytes">Zip包字节数组</param> /// <param name="_outputPath">解压输出路径</param> /// <param name="_password">解压密码</param> /// <param name="_unzipCallback">UnzipCallback对象,负责回调</param> /// <returns></returns> public static bool UnzipFile(byte[] _fileBytes, string _outputPath, string _password = null, UnzipCallback _unzipCallback = null) { if ((null == _fileBytes) || string.IsNullOrEmpty(_outputPath)) { if (null != _unzipCallback) { _unzipCallback.OnFinished(false); } return(false); } bool result = UnzipFile(new MemoryStream(_fileBytes), _outputPath, _password, _unzipCallback); if (!result) { if (null != _unzipCallback) { _unzipCallback.OnFinished(false); } } return(result); }
/// <summary> /// 解压Zip包 /// </summary> /// <param name="_filePathName">Zip包的文件路径名</param> /// <param name="_outputPath">解压输出路径</param> /// <param name="_password">解压密码</param> /// <param name="_unzipCallback">UnzipCallback对象,负责回调</param> /// <returns></returns> public static bool UnzipFile(string _filePathName, string _outputPath, string _password = null, UnzipCallback _unzipCallback = null) { if (string.IsNullOrEmpty(_filePathName) || string.IsNullOrEmpty(_outputPath)) { if (null != _unzipCallback) { _unzipCallback.OnFinished(false); } return(false); } try { return(UnzipFile(File.OpenRead(_filePathName), _outputPath, _password, _unzipCallback)); } catch (System.Exception _e) { Debug.LogError("[ZipUtility.UnzipFile]: " + _e.ToString()); if (null != _unzipCallback) { _unzipCallback.OnFinished(false); } return(false); } }
//解压Zip public static bool UnzipFile(Stream pInputStream, //Zip文件流 string pOutPath, //解压路径 string pPassword = null, //密码 UnzipCallback pCB = null) //回调 { if (null == pInputStream || string.IsNullOrEmpty(pOutPath)) { pCB?.OnFinished(false); return(false); } // 创建文件目录 if (!Directory.Exists(pOutPath)) { Directory.CreateDirectory(pOutPath); } // 解压Zip包 using (var zipInputStream = new ZipInputStream(pInputStream)) { if (!string.IsNullOrEmpty(pPassword)) { zipInputStream.Password = pPassword; } ZipEntry entry = null; while (null != (entry = zipInputStream.GetNextEntry())) { if (string.IsNullOrEmpty(entry.Name)) { continue; } if (null != pCB && !pCB.OnPreUnzip(entry)) { continue; // 过滤 } var filePathName = Path.Combine(pOutPath, entry.Name); // 创建文件目录 if (entry.IsDirectory) { Directory.CreateDirectory(filePathName); continue; } // 写入文件 try { using (var fileStream = File.Create(filePathName)) { var bytes = new byte[2048]; while (true) { var count = zipInputStream.Read(bytes, 0, bytes.Length); if (count > 0) { fileStream.Write(bytes, 0, count); } else { pCB?.OnPostUnzip(entry); break; } } } } catch (Exception _e) { Debug.LogError("[UnzipFile]: " + _e); GC.Collect(); pCB?.OnFinished(false); return(false); } } } GC.Collect(); pCB?.OnFinished(true); return(true); }
/// <summary> /// 解压Zip包; /// </summary> /// <param name="inputStream">Zip包输入流</param> /// <param name="outputPath">解压输出路径</param> /// <param name="password">解压密码</param> /// <param name="unzipCallback">UnzipCallback对象,负责回调</param> /// <returns></returns> public static bool UnzipFile(Stream inputStream, string outputPath, string password = null, UnzipCallback unzipCallback = null) { if ((null == inputStream) || string.IsNullOrEmpty(outputPath)) { if (null != unzipCallback) { unzipCallback.OnFinished(false); } return(false); } // 创建文件目录; if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } // 解压Zip包; ZipEntry entry = null; using (var zipInputStream = new ZipInputStream(inputStream)) { if (!string.IsNullOrEmpty(password)) { zipInputStream.Password = password; } while (null != (entry = zipInputStream.GetNextEntry())) { if (string.IsNullOrEmpty(entry.Name)) { continue; } if ((null != unzipCallback) && !unzipCallback.OnPreUnzip(entry)) { continue; // 过滤; } var filePathName = Path.Combine(outputPath, entry.Name); // 创建文件目录; if (entry.IsDirectory) { Directory.CreateDirectory(filePathName); continue; } // 写入文件; try { using (var fileStream = File.Create(filePathName)) { var bytes = new byte[1024]; while (true) { var count = zipInputStream.Read(bytes, 0, bytes.Length); if (count > 0) { fileStream.Write(bytes, 0, count); } else { if (null != unzipCallback) { unzipCallback.OnPostUnzip(entry); } break; } } } } catch (System.Exception e) { LogHelper.PrintError($"[SharpZipLibHelper.UnzipFile]: {e.ToString()}"); if (null != unzipCallback) { unzipCallback.OnFinished(false); } return(false); } } } if (null != unzipCallback) { unzipCallback.OnFinished(true); } return(true); }
/// <summary> /// Decompress /// </summary> /// <param name="inputStream">Zip inputStream</param> /// <param name="outputPath">output folder</param> /// <param name="password">password</param> /// <param name="unzipCallback">UnzipCallback</param> /// <returns></returns> public static bool Decompress(Stream inputStream, string outputPath, string password = null, UnzipCallback unzipCallback = null) { if ((null == inputStream) || string.IsNullOrEmpty(outputPath)) { if (null != unzipCallback) { unzipCallback.OnFinished(false); } return(false); } // create folder if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } // unzip ZipEntry entry = null; using (ZipInputStream zipInputStream = new ZipInputStream(inputStream)) { if (!string.IsNullOrEmpty(password)) { zipInputStream.Password = password; } while (null != (entry = zipInputStream.GetNextEntry())) { if (string.IsNullOrEmpty(entry.Name)) { continue; } if ((null != unzipCallback) && !unzipCallback.OnPreUnzip(entry)) { continue; // filter } string filePathName = Path.Combine(outputPath, entry.Name); // create folder if (entry.IsDirectory) { Directory.CreateDirectory(filePathName); continue; } // write to file try { using (FileStream fileStream = File.Create(filePathName)) { byte[] bytes = new byte[1024]; while (true) { int count = zipInputStream.Read(bytes, 0, bytes.Length); if (count > 0) { fileStream.Write(bytes, 0, count); } else { if (null != unzipCallback) { unzipCallback.OnPostUnzip(entry); } break; } } } } catch (System.Exception e) { Debug.LogError(e.ToString()); if (null != unzipCallback) { unzipCallback.OnFinished(false); } return(false); } } } if (null != unzipCallback) { unzipCallback.OnFinished(true); } return(true); }
/// <summary> /// Decompress /// </summary> /// <param name="filePathName">file to decompress. file path</param> /// <param name="outputPath">output folder</param> /// <param name="password">password</param> /// <param name="unzipCallback">UnzipCallback</param> /// <returns></returns> public static bool Decompress(string filePathName, string outputPath, string password = null, UnzipCallback unzipCallback = null) { if (string.IsNullOrEmpty(filePathName) || string.IsNullOrEmpty(outputPath)) { if (null != unzipCallback) { unzipCallback.OnFinished(false); } return(false); } try { return(Decompress(File.OpenRead(filePathName), outputPath, password, unzipCallback)); } catch (System.Exception e) { Debug.LogError(e.ToString()); if (null != unzipCallback) { unzipCallback.OnFinished(false); } return(false); } }