ZipClient.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using MediaBrowser.Model.IO;
  2. using SharpCompress.Common;
  3. using SharpCompress.Reader;
  4. using System.IO;
  5. namespace MediaBrowser.ServerApplication.Implementations
  6. {
  7. /// <summary>
  8. /// Class DotNetZipClient
  9. /// </summary>
  10. public class ZipClient : IZipClient
  11. {
  12. /// <summary>
  13. /// Extracts all.
  14. /// </summary>
  15. /// <param name="sourceFile">The source file.</param>
  16. /// <param name="targetPath">The target path.</param>
  17. /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>
  18. public void ExtractAll(string sourceFile, string targetPath, bool overwriteExistingFiles)
  19. {
  20. using (var fileStream = File.OpenRead(sourceFile))
  21. {
  22. ExtractAll(fileStream, targetPath, overwriteExistingFiles);
  23. }
  24. }
  25. /// <summary>
  26. /// Extracts all.
  27. /// </summary>
  28. /// <param name="source">The source.</param>
  29. /// <param name="targetPath">The target path.</param>
  30. /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>
  31. public void ExtractAll(Stream source, string targetPath, bool overwriteExistingFiles)
  32. {
  33. using (var reader = ReaderFactory.Open(source))
  34. {
  35. var options = ExtractOptions.ExtractFullPath;
  36. if (overwriteExistingFiles)
  37. {
  38. options = options | ExtractOptions.Overwrite;
  39. }
  40. reader.WriteAllToDirectory(targetPath, options);
  41. }
  42. }
  43. }
  44. }